给我一段opengl 代码
时间: 2024-10-09 13:00:48 浏览: 22
opengl入门&示例代码.zip
在OpenGL中,创建一个简单的窗口并设置基本着色器的基本步骤如下。这是一个使用GLFW库的C++示例,展示了如何初始化、设置视口和绘制三角形:
```cpp
#include <glad/glad.h>
#include <GLFW/glfw3.h>
// 创建一个基本着色器
void create_shaders() {
// 着色器源代码
const char* vertex_shader_source = "#version 330 core\n"
"in vec4 in_Position;\n"
"void main() {\n"
" gl_Position = in_Position;\n"
"}\n";
const char* fragment_shader_source = "#version 330 core\n"
"out vec4 out_Color;\n"
"void main() {\n"
" out_Color = vec4(1.0f, 0.0f, 0.0f, 1.0f); // 设置红色\n"
"}\n";
GLuint vertex_shader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertex_shader, 1, &vertex_shader_source, NULL);
glCompileShader(vertex_shader);
GLuint fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragment_shader, 1, &fragment_shader_source, NULL);
glCompileShader(fragment_shader);
GLuint shader_program = glCreateProgram();
glAttachShader(shader_program, vertex_shader);
glAttachShader(shader_program, fragment_shader);
glLinkProgram(shader_program);
}
int main() {
if (!glfwInit()) {
return -1;
}
GLFWwindow* window = glfwCreateWindow(800, 600, "Hello OpenGL", NULL, NULL);
if (window == nullptr) {
glfwTerminate();
return -1;
}
gladLoadGLLoader((GLADloadproc)glfwGetProcAddress);
glEnable(GL_DEPTH_TEST); // 设置深度测试
create_shaders();
while (!glfwWindowShouldClose(window)) {
// ... 渲染循环 ...
// 获取输入并处理
// ...
// 设置视角和模型矩阵
// ...
// 使用顶点缓冲对象
glBindVertexArray(vao);
glDrawArrays(GL_TRIANGLES, 0, vertices.size()); // 绘制三角形
// 提交帧到GPU
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
```
这个例子中,我们首先包含了必要的库,然后创建了顶点着色器和片段着色器。接着,我们设置了窗口和GLFW,并通过GLAD加载OpenGL函数。渲染循环中,我们将着色器绑定到程序,设置矩阵,然后绘制三角形。
阅读全文