2013-12-02 3 views
0

Я прочитал 8-й редактор OpenGL Readbook. Но я не могу создать пример из главы 3 «Пример команд рисования». Авторы использовали в примере собственную библиотеку vmath.h. Но это не работает. Они забыли добавить библиотечную функцию «vmath::translation(GLfloat, GLfloat, GLfloat);», хотя использовали ее. А авторы использовали собственную библиотеку «vapp.h», что меня смущает. Там много макросов, с помощью которых определяется класс. Я действительно смущен. Я использовал вместо своей библиотеки библиотеку «Eigen» для линейной алгебры.

Here is my code on GitHub

Я скомпилировал и запустил эту программу. Это работает. Но я вижу черное окно, но я должен увидеть четыре треугольника. Что я сделал не так? P.S. Я переделал программу авторов, используя для матриц и вершин «Собственную библиотеку». Я видел только черный экран. Зачем?! Here is code on GitHub У меня есть два шейдеры:
вершинных шейдеров:
Ошибка в примере OpenGL Redbook, глава 3

#version 400 core 

uniform mat4 model_matrix; 
uniform mat4 projection_matrix; 

layout (location = 0) in vec4 position; 
layout (location = 1) in vec4 color; 

out vec4 vs_fs_color; 

void main(void) 
{ 
    vs_fs_color = color; 
    gl_Position = projection_matrix * (model_matrix * position); 
} 

И пиксельный шейдер:

#version 400 core 

in vec4 vs_fs_color; 

layout (location = 0) out vec4 color; 

void main(void) 
{ 
    color = vs_fs_color; 
} 


Я точно Используйте эти шейдеры. Here is what I should see.
This is original project(MSVC++)
This is a include files(including vapp.h and vapp.h)

+0

Появляется ошибкой. Функция 'translate', а не' translation'. – keltar

ответ

1

Когда вы настраиваете ваш model_matrix, то второй аргумент glUniformMatrix4fv должен быть 1, а не 4. Кроме того, вы используете неправильные показатели в frustum. Измените result(2, 0) на result(0, 2) и сделайте то же самое для всех остальных пар.

Смежные вопросы