Directx or OpenGL
| |
karuy | Дата: Понедельник, 26 Ноября 2012, 21:51 | Сообщение # 41 |
заслуженный участник
Сейчас нет на сайте
| Студию поставил или на чем собираешься кодить?
|
|
| |
VladHate | Дата: Понедельник, 26 Ноября 2012, 22:24 | Сообщение # 42 |
почетный гость
Сейчас нет на сайте
| Студию поставил Добавлено (26.11.2012, 22:24) --------------------------------------------- Ничерта не пойму как подключить OpenGL к проекту glut и другие либы ясно он для работы именно в OGL не пойму...
|
|
| |
Бит | Дата: Понедельник, 26 Ноября 2012, 22:34 | Сообщение # 43 |
был не раз
Сейчас нет на сайте
| Достаточно подключить glut файлы в проект. OpenGL уже есть в win.
|
|
| |
VladHate | Дата: Понедельник, 26 Ноября 2012, 22:55 | Сообщение # 44 |
почетный гость
Сейчас нет на сайте
| То есть он идет сразу с виндой? а как узнать версию OGL?
|
|
| |
LIFEfreedom | Дата: Понедельник, 26 Ноября 2012, 23:22 | Сообщение # 45 |
был не раз
Сейчас нет на сайте
| VladHate, Версия идет вместе с дровами на видеокарту, погугли свою видеокарту
|
|
| |
Archido | Дата: Вторник, 27 Ноября 2012, 07:28 | Сообщение # 46 |
Сэнсэй
Сейчас нет на сайте
| Quote (Xakep) но OpenGL чуточку быстрее за счет того что мелкософт написал DirectX через COM-технологии, следовательно часть процессорного времени уходит на обработку вызовов интерфейсов Ну, COM с точки зрения стоимости вызовов методов (или функций) - абсолютно тоже самое, что и обычный полиморфный класс, т.е. вся разница только в виртуальных функциях... Они, конечно, чуток помедленнее, но повторюсь: на фоне нагрузки на CPU и GPU - это как капля в море. Современные движки от и до напичканы полиморфными классами и интерфейсами, внутри и снаружи (API движка) такие виртуальные ф-ции дергаются тысячами, а то и больше. На фоне всего этого вызовы GAPI на стороне CPU (именно вызовы, а не работа внутри драйвера) - фактически ничего не стоят
Насколько я помню, чуть раньше OpenGL считался немного быстрее DirectX9 за счет меньшей стоимости вызова отрисовки геометрии (DIP, DrawIndexedPrimitive в DX и glDrawElements в OpenGL), DX проводил гораздо больше времени внутри драйвера чем OpenGL, поэтому для первого и придумали так называемый Hardware Instancing, чтобы одинаковые объекты за раз рисовать и экономить DIP'ы. Но в 10-том и 11-том такой проблемы теперь нет.
Но на самом деле это не так важно , кто быстрее все равно определить не выйдет - нормальных фактов нет и достать их маловероятно, поэтому можно только предполагать. В любом случае потенциальная разница может составлять до 10% в самом худшем случае (может зависить от аппаратуры, драйверов, рук и так далее), ибо аппаратные возможности все таки используются одни и те же. Конечно, бывают и исключения - когда пишут очень кривые драйверы и внезапно наступает слайд-шоу или даже BSOD (в свое время славился ATI со своими OGL драйверами) - но это лишь частные случаи. Важно другое - новички, создающие подобные темы, прочитав что "кто-то там быстрее" могут и захотеть то что "быстрее", закрыв на все остальное, глаза.
Что использовать под PC Windows - вообще без разницы, если захочется на консоли, то либо выбирать одну из них (Xbox - DX, PS - OpenGL), либо использовать и то и другое. Соответственно, Linux или Mac - только OpenGL. Мобильные платформы практически все используют OpenGL, мобильная Windows RT - DX only.
Мое имхо: При наличии достаточного опыта выбор между ними должен основываться только на том, под какую платформу/платформы человек собирается писать, если можно использовать и то и другое - то тут уже фактически дело вкуса и вопрос религии. Но в идеале неплохо бы знать оба Если опыта в программировании и\или в графике мало - то c OpenGL дела пойдут проще и быстрее, а позже уже человек будет сам прекрасно знать - что ему нужно
Сообщение отредактировал Archido - Вторник, 27 Ноября 2012, 07:33 |
|
| |
VladHate | Дата: Среда, 28 Ноября 2012, 07:38 | Сообщение # 47 |
почетный гость
Сейчас нет на сайте
| Подключил я glut файлы и стандартно #include <GL/gl.h> Но даже самая базовая функция glClearColor(); не работает....компилятор ее просто не видит....что делать? И так же асолютно со всеми функциями относящимися к графической части OpenGL freeglut работает нормальноДобавлено (28.11.2012, 07:38) --------------------------------------------- Дрова на видеокарту обновил для более новой версии OGL
|
|
| |
wawa13 | Дата: Среда, 28 Ноября 2012, 11:41 | Сообщение # 48 |
был не раз
Сейчас нет на сайте
| а *.lib файлы к линкеру все подключил? и кстати #include <GL/gl.h> не надо - он уже прописан в glut/freeglut.
|
|
| |
VladHate | Дата: Среда, 28 Ноября 2012, 12:44 | Сообщение # 49 |
почетный гость
Сейчас нет на сайте
| а какие .lib файлы? библиотеки freeglut которые подключил а ещё какие?
|
|
| |
goldsphere | Дата: Среда, 28 Ноября 2012, 14:08 | Сообщение # 50 |
заслуженный участник
Сейчас нет на сайте
| Quote (VladHate) Подключил я glut файлы и стандартно #include <GL/gl.h> #include <GL/glut.h>
FinderX - Android Аркада
|
|
| |
VladHate | Дата: Среда, 28 Ноября 2012, 20:30 | Сообщение # 51 |
почетный гость
Сейчас нет на сайте
| Да это я подключил все вот так: Code #include <GL\GL.h> #include <GL\freeglut.h> #include <GL\freeglut_ext.h> #include <GL\GLU.h> #include <gl\GL.h> #include <gl\GLU.h> #include <gl\glut.h> Чтобы быть уверенным но ничего так и не работает... Какие библиотеки подключить? Не работает именно команды OpenGL с glut все прекрасноДобавлено (28.11.2012, 18:21) --------------------------------------------- ап Добавлено (28.11.2012, 20:30) --------------------------------------------- ау
Сообщение отредактировал VladHate - Среда, 28 Ноября 2012, 15:53 |
|
| |
Demeron | Дата: Среда, 28 Ноября 2012, 20:49 | Сообщение # 52 |
User created in C++
Сейчас нет на сайте
| VladHate, подключи OpenGL32.lib
|
|
| |
VladHate | Дата: Среда, 28 Ноября 2012, 21:28 | Сообщение # 53 |
почетный гость
Сейчас нет на сайте
| Теперь мне выдает вот такое неимоверное количество ошибок...как их то исправить? http://s2.ipicture.ru/uploads/20121128/SBwR53Go.jpg Или уже это все...
Сообщение отредактировал VladHate - Среда, 28 Ноября 2012, 21:29 |
|
| |
Racot | Дата: Среда, 28 Ноября 2012, 21:55 | Сообщение # 54 |
постоянный участник
Сейчас нет на сайте
| #include <gl\gl.h> #pragma comment(lib,"opengl32.lib")
Например Code #include <windows.h> #include <gl\gl.h> #pragma comment(lib,"opengl32.lib")
HGLRC gl; GLuint text;
LRESULT CALLBACK phWndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch(uMsg) { case(WM_CREATE): { PIXELFORMATDESCRIPTOR pfd; HDC dc=GetDC(hwnd); ZeroMemory(&pfd,sizeof(pfd)); pfd.nSize=sizeof(pfd); pfd.nVersion=1; pfd.dwFlags=PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER; pfd.iPixelType=PFD_TYPE_RGBA; pfd.cColorBits=32; pfd.iLayerType=PFD_MAIN_PLANE; int pf=ChoosePixelFormat(dc,&pfd); SetPixelFormat(dc,pf,&pfd); gl=wglCreateContext(dc); ReleaseDC(hwnd,dc); break; } case(WM_DESTROY): { wglDeleteContext(gl); PostQuitMessage(0); return 0; break; } case(WM_CHAR): { PostMessage(hwnd,WM_DESTROY,0,0); break; } case(WM_PAINT): {
HDC dc=GetDC(hwnd); wglMakeCurrent(dc,gl); glClearColor(0.0,0.0,0.0,1.0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.0,0.0,1.0); glBegin(GL_QUADS); glVertex2f(0.5,-0.5); glVertex2f(0.5,0.5); glVertex2f(-0.5,0.5); glVertex2f(-0.5,-0.5); glEnd(); wglMakeCurrent(0,0); SwapBuffers(dc); ReleaseDC(hwnd,dc); break; } } return DefWindowProc(hwnd,uMsg,wParam,lParam); }
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { WNDCLASSEXA cd; cd.cbSize=sizeof(WNDCLASSEXA); cd.style=CS_HREDRAW|CS_OWNDC|CS_VREDRAW; cd.lpfnWndProc=phWndProc; cd.cbWndExtra=0; cd.cbClsExtra=0; cd.hInstance=hInstance; cd.hCursor=LoadCursor(hInstance,IDC_ARROW); cd.hIcon=LoadIcon(hInstance,IDI_APPLICATION); cd.hbrBackground=(HBRUSH)COLOR_BACKGROUND+1; cd.lpszMenuName=0; cd.lpszClassName="phWndForGL"; cd.hIconSm=0; if(!RegisterClassExA(&cd))return 1; HWND w=CreateWindowExA(0,"phWndForGL","GLT1",WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN|WS_CLIPSIBLINGS,0,0,800,600,0,0,hInstance,0); if(!w)return 2; ShowWindow(w,SW_SHOW); MSG m; while(GetMessageA(&m,0,0,0)) { TranslateMessage(&m); DispatchMessageA(&m); } return 0; } Добавлено (28.11.2012, 21:55) --------------------------------------------- Можно качнуть проект на http://codesampler.com/oglsrc/oglsrc_1.htm#ogl_initialization - и конвертнуть его в 2010 солюшн. (проекты есть как для c++, так и для C#, VB.NET)
Специалист "во всем" - специалист "ни в чем" ------------------------------------ Script Reference для Unity3D Помогу со скриптами for Unity3D
|
|
| |
VladHate | Дата: Пятница, 30 Ноября 2012, 19:50 | Сообщение # 55 |
почетный гость
Сейчас нет на сайте
| Я вижу все редко glut используют в основном win32 стандартные библиотеки но почему? Добавлено (30.11.2012, 19:50) --------------------------------------------- А для работы со звуком, видео и пользовательским вводом в OpenGL какие библиотеки отвечают?
|
|
| |
LIFEfreedom | Дата: Пятница, 25 Января 2013, 14:06 | Сообщение # 56 |
был не раз
Сейчас нет на сайте
| VladHate, если я не ошибаюсь, то для звука тебе нужен OpenAL, так как OpenGL отвечает за графику
|
|
| |
warzes | Дата: Суббота, 26 Января 2013, 13:45 | Сообщение # 57 |
участник
Сейчас нет на сайте
| Отпишу свое Имхо в реалиях DX 11 и OGL 3. DX проще для новичка, сразу понимаешь почему надо делать именно так а не по другому (особенно по околотрехмерным темам - математике, теории и прочего), направляет в нужное русло, так как юзает понятие класс в котором и собирает схожие по функционалу вещи. OGL - это куча неупорядоченных функций, и фиг поймешь какую когда и зачем нужно вызвать, ах да, их все надо знать наизусть, потому что IDE тебе здесь не помощник, а в dx команда подстановки тебе поможет, выставив все нужные методы).
Ни в коем разе новичок не должен выбирать что изучать по платформам. Программирование под разные платформы, это не только выбор между OGL и DX, надо еще иметь невероятный скилл программиста (а вы думаете, почему валв когда начала портировать свой стим на никсы, наняла кучу юникс программистов? Не потому что у них нет программистов, а потому что это не такая уж простая вещь). Еще учитывайте что любителей не пустят в консоли (много ли вы видели инди игр на консолях?) Мобилы, да, возможно
Насчет уроков. То что на OGL уроков много - ложь. Их то много, но они неактуальны в современных реалиях, да просто посмотрите - 90% уроков рисуют через glBegin/glEnd... А ниче что начиная с OGL 3.3 (а сейчас уже OGL 4.3 есть) этих команд больше не существует? Как и сотне других которые расматривают во всяких нехе.
Мой блог Вики DirectX
|
|
| |
|