OpenGL红皮书示例中的错误,第3章

时间:2013-12-02 12:43:37

标签: c++ opengl glsl

我阅读了OpenGL Readbook第8编辑器。但我无法从第3章“绘图命令示例”中创建示例。作者在示例中使用了自己的库vmath.h。但它不起作用。他们忘了添加库函数“vmath::translation(GLfloat, GLfloat, GLfloat);”,虽然使用它。作者使用了自己的库“vapp.h”,这让我很困惑。有很多宏,通过定义类的方法。我真的很困惑。 我使用了代替他们的库,线性代数的“特征”库。

Here is my code on GitHub

我编译并运行了这个程序。这行得通。但我看到一个黑色的窗户,但我应该看到一个四个三角形。我做错了什么? 附:我通过用于矩阵和顶点的“特征库”重新编写了作者的程序。我只看到黑屏。为什么?! Here is code on GitHub 我有两个着色器:
顶点着色器:

#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)

1 个答案:

答案 0 :(得分:1)

当您设置model_matrix时,glUniformMatrix4fv的第二个参数应为1,而不是4.此外,您在frustum中使用了错误的索引。将result(2, 0)更改为result(0, 2)并对所有其他对执行相同操作。