Четверг, 18 Августа 2022, 05:30

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Общие обсуждения программистов » Вопрос об OpenGL
Вопрос об 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, если не ошибаюсь, есть много полезных примитивов (всякие кубы, шары, чайник и ещё несколько). Главное усвоить основы, без них ни какие дополнительные не помогут...


Форум игроделов » Программирование » Общие обсуждения программистов » Вопрос об OpenGL
  • Страница 1 из 1
  • 1
Поиск:

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