opengl顶点不渲染

时间:2017-04-12 05:37:13

标签: c++ opengl

int main() {
using namespace game1;
using namespace graphics;
using namespace maths;
using namespace util;
using namespace std;

Window window("Game 1", 960, 540);
glClearColor(0.2f, 0.3f, 0.8f, 1.0f);

GLfloat vertices[] = {

    4, 3, 5,
    12, 3, 5,
    4, 6, 5,

    4, 6, 5,
    12, 6, 5,
    4, 3, 5
};

Matrix4f ortho = Matrix4f::genOrtho(0.0f, 16.0f, 0.0f, 9.0f, -1, 1);

GLuint vbo;
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(0);

ShaderProgram s;
s.attachShader(File("res/testVert.vert"), GL_VERTEX_SHADER);
s.attachShader(File("res/testFrag.frag"), GL_FRAGMENT_SHADER);
s.link();
s.enable();

s.setUniformMat4f("model", Matrix4f::identity());
s.setUniformMat4f("world", Matrix4f::identity());
s.setUniformMat4f("proj", ortho);



while (!window.closed()) 
{
    window.clear();
    glDrawArrays(GL_TRIANGLES, 0, 3);
    window.update();
}
    return 0;
}

我对opengl很新,我不确定我做错了什么。我怀疑它与vbo或者vertexAttribArrayPointer有关,我已经测试了很多东西,但我不知道是什么问题。它适用于普通的3顶点三角形,我确定我的错误在主

1 个答案:

答案 0 :(得分:1)

在代码中定义的正交矩阵沿着z轴具有从-1到1的可见范围。另一方面,三角形在z = 5处,这意味着它在近平面之外/远平面范围。