gpt4 book ai didi

c++ - OpenGL - VAO、VBO、IBO、glDrawElements 不显示

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:32 26 4
gpt4 key购买 nike

我无法让关卡数据显示在屏幕上。我的着色器正在使用正确渲染立方体但不是关卡。

这是我的 VBO、VAO 和 IBO 的设置:

void ZoneMesh::buildData()
{
// Create the VBO for this mesh
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

// Create the IBO
glGenBuffers(1, &ibo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, numPoly * 3 * sizeof(short), indices, GL_STATIC_DRAW);

// Create the VAO
glGenVertexArraysAPPLE(1, &vao);
glBindVertexArrayAPPLE(vao);

// Bind the VBO to the buffer and set up the attributes
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), BUFFER_OFFSET(0));
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), BUFFER_OFFSET(sizeof(float)*3));
glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), BUFFER_OFFSET(sizeof(float)*5));

//Bind the IBO to the VAO
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
}

这是我的顶点结构:

struct Vertex
{
float x;
float y;
float z;
float u;
float v;
float normX;
float normY;
float normZ;
};

ZoneMesh类中的相关数据项如下:

Vertex* vertices;
short* indices;

GLuint vbo;
GLuint vao;
GLuint ibo;

顶点着色器:

#version 120

attribute vec3 position;

uniform mat4 camera;

void main()
{
gl_Position = camera * vec4(position, 1.0f);
}

片段着色器:

#version 120

void main(void)
{
gl_FragColor = vec4(0.0, 0.6, 0.7, 1.0);
}

渲染:

    shader.Use();

// Testing - render the first 50 meshes
for(int i = 0; i < 50; i++)
{

glUniformMatrix4fv(shader("camera"), 1, GL_FALSE, glm::value_ptr(MVPMatrix));

glEnableVertexAttribArray(shader["position"]);
glBindVertexArrayAPPLE(zone.getVAO(i));
glDrawElements(GL_TRIANGLES, 500, GL_UNSIGNED_SHORT, NULL);

}

shader.UnUse();

渲染/着色器的使用不是问题。 MVPMatrix 是正确的。我在其上方正确渲染了一个立方体。虽然该区域不呈现。

最佳答案

GL_LINE 不是 glDrawElements 的有效原语,您需要 GL_LINES

在您的代码中使用 glGetError() 来查找此类问题!

关于c++ - OpenGL - VAO、VBO、IBO、glDrawElements 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11662030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com