OpenGL仅绘制创建的第一个对象可能是由于多种原因造成的。以下是一些基础概念、可能的原因以及解决方案:
OpenGL(Open Graphics Library)是一个跨平台的图形API,用于渲染2D和3D图形。它通过调用一系列的函数来创建、管理和渲染图形对象。
以下是一个简单的OpenGL绘制多个对象的示例代码:
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <vector>
struct Object {
GLuint vao, vbo;
void init() {
// 初始化VAO和VBO
glGenVertexArrays(1, &vao);
glGenBuffers(1, &vbo);
// 绑定VAO和VBO,上传顶点数据
}
void draw() {
glBindVertexArray(vao);
glDrawArrays(GL_TRIANGLES, 0, 3);
}
};
int main() {
if (!glfwInit()) return -1;
GLFWwindow* window = glfwCreateWindow(640, 480, "OpenGL", NULL, NULL);
if (!window) {
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glewInit();
std::vector<Object> objects(3); // 创建3个对象
for (auto& object : objects) {
object.init();
}
while (!glfwWindowShouldClose(window)) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
for (auto& object : objects) {
object.draw();
}
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
通过以上步骤和示例代码,你应该能够找到并解决OpenGL仅绘制创建的第一个对象的问题。
领取专属 10元无门槛券
手把手带您无忧上云