ПрограммированиеФорумГрафика

Окно OpenGL

#0
7:30, 23 фев 2010

Изучаю OpenGL по этим статьям. Возникли проблемы с построением окна. Сделал все как в первом уроке (ошибок в коде быть не может, ибо код не прописывал ручками, а просто копировал). Компилится без ошибок. Окно строится и тут же пропадает. Хотя выход из окна осуществляется нажатием Esc. Если нужно могу скинуть свой код.

#1
8:35, 23 фев 2010

Попробуй эту скачать и запустить:
http://nehe.gamedev.net/data/lessons/vs_net/lesson01.zip

#2
8:37, 23 фев 2010

Wiedzmin1270
> (ошибок в коде быть не может, ибо код не прописывал ручками, а просто копировал)

К сожалению копипаст не спасает от ошибок...

#3
12:27, 23 фев 2010

Кидай лучше сам проект.

#4
13:35, 23 фев 2010

Вот мой проект

QzR!!!
Тот проект работает как надо. Открыл файл реализации, сравнил. Вроде все тоже самое.

#5
15:12, 23 фев 2010

Ну так пройдись с точкой останова, посмотри на какой строчке вылетает. :)

#6
15:46, 23 фев 2010

Wiedzmin1270
> ошибок в коде быть не может, ибо код не прописывал ручками
думал также, пока искал ошибку у себя :) В итоге оказалось, что одну строку скопировал дважды, а другую пропустил. Советую ещё раз внимательно сверить свой вариант с исходным текстом и с верно работающим вариантом.

#7
19:57, 23 фев 2010

Wiedzmin1270
Ну и что тогда мучиться? Это один в один код первого урока, только с комментариями на английском.

#8
21:46, 23 фев 2010

Такая каша конечно. Короче, убрав все приведения LPCWSTR и отрубив юникод выяснил, что дескриптор окна не создаётся, похожа из-за пиксельного формата. Вынеси установку пиксельного формата в отдельную функцию:

Enil SetPixelFormatDC(HDC hDC)
{
  Eint nPixelFormat;
  PIXELFORMATDESCRIPTOR pfd;
  memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR));

    pfd.nSize      = sizeof(PIXELFORMATDESCRIPTOR);
    pfd.nVersion    = 1;
    pfd.dwFlags      = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
    pfd.iPixelType    = PFD_TYPE_RGBA;
    pfd.cColorBits    = 32;
  pfd.cDepthBits    = 16;
  pfd.cStencilBits  = 8;

  if(!(nPixelFormat = ChoosePixelFormat(hDC, &pfd))) CleanUp();
  if(!SetPixelFormat(hDC, nPixelFormat, &pfd)) CleanUp();
}

Убери все комменты - они нафиг не нужны в соде создания окна, там и так всё понятно. А вообще, посмотри мой код создания окна - может поможет. Desktop

ПрограммированиеФорумГрафика

Тема в архиве.