Пятница, 08 Ноября 2024, 10:05

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
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 (именно вызовы, а не работа внутри драйвера) - фактически ничего не стоят smile

Насколько я помню, чуть раньше OpenGL считался немного быстрее DirectX9 за счет меньшей стоимости вызова отрисовки геометрии (DIP, DrawIndexedPrimitive в DX и glDrawElements в OpenGL), DX проводил гораздо больше времени внутри драйвера чем OpenGL, поэтому для первого и придумали так называемый Hardware Instancing, чтобы одинаковые объекты за раз рисовать и экономить DIP'ы. Но в 10-том и 11-том такой проблемы теперь нет.

Но на самом деле это не так важно biggrin , кто быстрее все равно определить не выйдет - нормальных фактов нет и достать их маловероятно, поэтому можно только предполагать. В любом случае потенциальная разница может составлять до 10% в самом худшем случае (может зависить от аппаратуры, драйверов, рук и так далее), ибо аппаратные возможности все таки используются одни и те же. Конечно, бывают и исключения - когда пишут очень кривые драйверы и внезапно наступает слайд-шоу или даже BSOD happy (в свое время славился ATI со своими OGL драйверами) - но это лишь частные случаи.
Важно другое - новички, создающие подобные темы, прочитав что "кто-то там быстрее" могут и захотеть то что "быстрее", закрыв на все остальное, глаза.

Что использовать под PC Windows - вообще без разницы, если захочется на консоли, то либо выбирать одну из них (Xbox - DX, PS - OpenGL), либо использовать и то и другое. Соответственно, Linux или Mac - только OpenGL. Мобильные платформы практически все используют OpenGL, мобильная Windows RT - DX only.

Мое имхо:
При наличии достаточного опыта выбор между ними должен основываться только на том, под какую платформу/платформы человек собирается писать, если можно использовать и то и другое - то тут уже фактически дело вкуса и вопрос религии. Но в идеале неплохо бы знать оба smile
Если опыта в программировании и\или в графике мало - то c OpenGL дела пойдут проще и быстрее, а позже уже человек будет сам прекрасно знать - что ему нужно wink


Сообщение отредактировал 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
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг