小编Xal*_*ros的帖子

在OpenGL 3.x/4.x中绘制多个模型

我正在研究一个渲染引擎,到目前为止它已经很好了,但我无法弄清楚为什么当我进行两次绘制调用来渲染不同的模型时,只会显示1个.

我正在使用wxWidgets来处理窗口系统,有问题的代码粘贴在下面.有什么建议?

主渲染循环

TestShader.Activate();
glUseProgram(TestShader.Program);

ProjectionMatrix = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.0f);
int projectionMatrixLocation = glGetUniformLocation(TestShader.Program, "ProjectionMatrix");
glUniformMatrix4fv(projectionMatrixLocation, 1, GL_FALSE, glm::value_ptr(ProjectionMatrix));

glm::mat4 ViewMatrix = glm::lookAt(
                            glm::vec3(position),          
                            glm::vec3(position+direction),
                            glm::vec3(up)                 
                       );
int viewMatrixLocation = glGetUniformLocation(TestShader.Program, "ViewMatrix");
glUniformMatrix4fv(viewMatrixLocation, 1, GL_FALSE, glm::value_ptr(ViewMatrix));

TestModel[1].Draw(TestShader, glm::vec3(0,0,-11));
TestModel[0].Draw(TestShader, glm::vec3(0,0,-1));

Refresh(false);
Run Code Online (Sandbox Code Playgroud)

模型绘图功能

void E_MODEL::Draw(EShader Shader, glm::vec3 Location)
{
if (!Registered) glGenVertexArrays(1, &VAO[0]);
glBindVertexArray(VAO[0]);

if (!Registered) glGenBuffers(1, &VBO[0]);
glBindBuffer(GL_ARRAY_BUFFER, VBO[0]);
if (!Registered) glBufferData(GL_ARRAY_BUFFER, Vertices.size() * sizeof(glm::vec3), &Vertices[0], GL_STATIC_DRAW);

if (!Registered) glGenBuffers(1, &VBO[1]);
glBindBuffer(GL_ARRAY_BUFFER, VBO[1]);
if (!Registered) glBufferData(GL_ARRAY_BUFFER, Normals.size() …
Run Code Online (Sandbox Code Playgroud)

opengl

2
推荐指数
1
解决办法
2247
查看次数

标签 统计

opengl ×1