antlord |
|
Темы:
30
Сообщения:
195
Участник с: 24 июня 2012
|
Привет арчеводы. У меня возникла проблема с OpenGL. Точнее с его использованием в его разработке. Понимаю, что с такими вопросами надо на gamedev или другие форумы, посвящеенные OpenGL или игрострою, но я решил все-таки обратиться на "родной" форум. В общем задача проста. Я хочу нарисовать один квадрат позади другого. Для этого, насколько мне известно, надо использовать очистить буфер глубины, активировать его и задать значения по оси Z для вершин. Если имеет значение, то использую wxWidgets. glClearColor(0.1f, 0.1f, 0.1f, 1.0f); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); glFrustum(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); short w = GetSize().GetWidth(); // Get size of canvas. short h = GetSize().GetHeight(); glViewport(0, 0, (GLint)w, (GLint)h); std::cout<<w<<h<<"\n"; glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glColor3f(0.0f,0.0f,0.0f); // Black. GraphicManager::DrawRectangle(-0.1f,0.1f,-0.1f,0.1f,0.0f); glColor3f(0.0f,0.0f,1.0f); // Blue. GraphicManager::DrawRectangle(-0.1f,0.1f,-0.1f,0.1f,0.9f); Refresh(); //функция перерисовки, в ней SwapBuffers происходит Однако черный квадрат «прячется» за синий. Пробовал повернуть сцену, но тогда картина, просто, привоидит в шок. Поворачивая сцену на 180°, синий квадрат все равно перед черным становится! Я на OpenGL и раньше писал, и вот снова понадобилось, но в этот раз просто ужас какой-то. Помогите, может я что-то забыл. Всю мат. часть уже перечитал =( «OpenGL Суперкнига» и «Красная книга OpenGL» – мое единственное чтиво в последнюю неделю. Кому нужна подстветка синтаксиса и форматирование, копию кода я сделал на pastebin Заранее спасибо за помощь! |
antlord |
|
Темы:
30
Сообщения:
195
Участник с: 24 июня 2012
|
Еще выснилось, что glFrustrum оказывается не срабатывает и после его вызовы glGetError() возвращает 1281 ошибку |
ivand |
|
Темы:
9
Сообщения:
477
Участник с: 04 января 2013
|
Загуглите: cube mark 3d,Linux version 0.8a Может где на этот бенч исходники валяются, там кубы летают, но должен быть з-буфффер |
antlord |
|
Темы:
30
Сообщения:
195
Участник с: 24 июня 2012
|
Как много «ф» =) Я сейчас ковыряю исходники примеров wxWidgets с OpenGL. Там все работает. Z buffer есть. Кстати frustum выдавал ошибку из-за того, что я в него по Z отрицательное значение передал. |