Вопрос об OpenGL
| |
clidi | Дата: Среда, 21 Декабря 2011, 22:32 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Посоветуйте книгу или сайт об OpenGL. Все книгу или сайты, которые я находил, не рассказывают какие файлы нужно иметь, где их скачать.
|
|
| |
0x90 | Дата: Среда, 21 Декабря 2011, 22:47 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Уроки от NeHe.
|
|
| |
Matou | Дата: Среда, 21 Декабря 2011, 22:48 | Сообщение # 3 |
Исходный коТ
Сейчас на сайте
| Для OpenGL 1.0 ничего скачивать, как правило, не надо, все что нужно это подключить GL.h и OpenGL32.lib. Хотя многие книги предпочитают начинать изучения OpenGL с glut'a. Что, в принципе, не лишено рациональности. Довольно хорошей книгой считается "Ричард и Бенджамин OpenGL Суперкнига", начинается изучение с glut'a, но 13-15 главы посвящены интеграции OpenGL на основные платформы.
Собственно сайт OpenGL, на котором есть все что нужно: http://www.opengl.org/
|
|
| |
noTformaT | Дата: Среда, 21 Декабря 2011, 22:54 | Сообщение # 4 |
Ukrainian independent game developer
Сейчас нет на сайте
| Мне в свое время помогла книга The Red Book.... - охринетительная классика.
@noTformaT
|
|
| |
Matou | Дата: Среда, 21 Декабря 2011, 22:58 | Сообщение # 5 |
Исходный коТ
Сейчас на сайте
| Quote (noTformaT) Мне в свое время помогла книга The Red Book.... - охринетительная классика. Ну и зачем советовать ее человеку который не знает какие файлы для ГЛ нужны? -__-
|
|
| |
noTformaT | Дата: Среда, 21 Декабря 2011, 23:03 | Сообщение # 6 |
Ukrainian independent game developer
Сейчас нет на сайте
| Quote (Matou) Ну и зачем советовать ее человеку который не знает какие файлы для ГЛ нужны? мм, я конечно хз, и возможно я читал какуе-то другую редакцию РедБука, но я отчетливо помню что там была ссылка на архив (со всеми хедерами и либами) расположенный на фтп сервере сайта СиликонГрафикс. И полный туториал как и куда кидать хедеры и либ-файлы, что-бы продолжать изучать ОГЛ с использованием РедБука.
@noTformaT
|
|
| |
Matou | Дата: Среда, 21 Декабря 2011, 23:14 | Сообщение # 7 |
Исходный коТ
Сейчас на сайте
| noTformaT, Повезло тебе, я такой ссылки не видел, зато редбук радостно встречает читателя таким годом: Code Example 1-1 : A Simple OpenGL Program #include <whateverYouNeed.h>
main() {
OpenAWindowPlease();
glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); glBegin(GL_POLYGON); glVertex2f(-0.5, -0.5); glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glEnd(); glFlush();
KeepTheWindowOnTheScreenForAWhile(); } Вполне веская причина чтобы не трогать редбук пока не разберешся с тем как подключить либу и настроить среду.
clidi, к стати, в Code::Block можно создать уже настроеный и вполне себе рабочий ОГЛ проект, выглядеть будет так: Code #include <windows.h> #include <gl/gl.h>
LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM); void EnableOpenGL(HWND hwnd, HDC*, HGLRC*); void DisableOpenGL(HWND, HDC, HGLRC);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wcex; HWND hwnd; HDC hDC; HGLRC hRC; MSG msg; BOOL bQuit = FALSE; float theta = 0.0f;
/* register window class */ wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_OWNDC; wcex.lpfnWndProc = WindowProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wcex.lpszMenuName = NULL; wcex.lpszClassName = "GLSample"; wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);;
if (!RegisterClassEx(&wcex)) return 0;
/* create main window */ hwnd = CreateWindowEx(0, "GLSample", "OpenGL Sample", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 256, 256, NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, nCmdShow);
/* enable OpenGL for the window */ EnableOpenGL(hwnd, &hDC, &hRC);
/* program main loop */ while (!bQuit) { /* check for messages */ if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { /* handle or dispatch messages */ if (msg.message == WM_QUIT) { bQuit = TRUE; } else { TranslateMessage(&msg); DispatchMessage(&msg); } } else { /* OpenGL animation code goes here */
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix(); glRotatef(theta, 0.0f, 0.0f, 1.0f);
glBegin(GL_TRIANGLES);
glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(0.0f, 1.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex2f(0.87f, -0.5f); glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-0.87f, -0.5f);
glEnd();
glPopMatrix();
SwapBuffers(hDC);
theta += 1.0f; Sleep (1); } }
/* shutdown OpenGL */ DisableOpenGL(hwnd, hDC, hRC);
/* destroy the window explicitly */ DestroyWindow(hwnd);
return msg.wParam; }
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CLOSE: PostQuitMessage(0); break;
case WM_DESTROY: return 0;
case WM_KEYDOWN: { switch (wParam) { case VK_ESCAPE: PostQuitMessage(0); break; } } break;
default: return DefWindowProc(hwnd, uMsg, wParam, lParam); }
return 0; }
void EnableOpenGL(HWND hwnd, HDC* hDC, HGLRC* hRC) { PIXELFORMATDESCRIPTOR pfd;
int iFormat;
/* get the device context (DC) */ *hDC = GetDC(hwnd);
/* set the pixel format for the DC */ 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 = 24; pfd.cDepthBits = 16; pfd.iLayerType = PFD_MAIN_PLANE;
iFormat = ChoosePixelFormat(*hDC, &pfd);
SetPixelFormat(*hDC, iFormat, &pfd);
/* create and enable the render context (RC) */ *hRC = wglCreateContext(*hDC);
wglMakeCurrent(*hDC, *hRC); }
void DisableOpenGL (HWND hwnd, HDC hDC, HGLRC hRC) { wglMakeCurrent(NULL, NULL); wglDeleteContext(hRC); ReleaseDC(hwnd, hDC); }
Если пользуешся MVC, то достаточно будет подключить OpenGL32.lib и должно зароботать.
|
|
| |
TimKruz | Дата: Четверг, 22 Декабря 2011, 11:40 | Сообщение # 8 |
старожил
Сейчас нет на сайте
| Quote (clidi) не рассказывают какие файлы нужно иметь, где их скачать. Сама библиотека OpenGL должна быть у тебя на компьютере. Модули для подключения OpenGL обычно поставляются в стандартном пакете любой среды программирования. Так что можешь уже начинать программировать. Или у тебя примеры из книг вообще не запускаются? P.S. И ты не сказал, на каком языке программируешь.
Сообщение отредактировал TimKruz - Четверг, 22 Декабря 2011, 11:40 |
|
| |
clidi | Дата: Четверг, 22 Декабря 2011, 17:02 | Сообщение # 9 |
почетный гость
Сейчас нет на сайте
| Программирую на С++. Я знаю что с самого начала в компьютере есть gl.h и glu.h. Но какие нужны еще библиотеки для комфортного использования OpenGL? glut, glew, glee?
|
|
| |
TimKruz | Дата: Четверг, 22 Декабря 2011, 17:52 | Сообщение # 10 |
старожил
Сейчас нет на сайте
| Quote (clidi) Но какие нужны еще библиотеки для комфортного использования OpenGL? glut, glew, glee? Ну, для начала изучения и gl/glu хватит, дополнительные библиотеки уже потом изучать нужно... В Glut, если не ошибаюсь, есть много полезных примитивов (всякие кубы, шары, чайник и ещё несколько). Главное усвоить основы, без них ни какие дополнительные не помогут...
|
|
| |
|