参考
网上查了一些资料,入门决定使用 GLFW官网.
实验过程
#include <GLFW/glfw3.h>
void render(GLFWwindow *window) {
glfwSwapBuffers(window);
float ratio;
int width, height;
glfwGetFramebufferSize(window, &width, &height);
ratio = width / (float) height;
glViewport(0, 0, width, height);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-ratio, ratio, -1.f, 1.f, 1.f, -1.f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef((float) glfwGetTime() * 50.f, 0.f, 0.f, 1.f);
glBegin(GL_TRIANGLES);
glColor3f(1.f, 0.f, 0.f);
glVertex3f(-0.6f, -0.4f, 0.f);
glColor3f(0.f, 1.f, 0.f);
glVertex3f(0.6f, -0.4f, 0.f);
glColor3f(0.f, 0.f, 1.f);
glVertex3f(0.f, 0.6f, 0.f);
glEnd();
glfwSwapBuffers(window);
}
int main(void) {
GLFWwindow *window;
// 初始化库
if(!glfwInit())
return 1;
// 创建一个窗体
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if(!window) {
glfwTerminate();
return 1;
}
// 创建这个窗体的OpenGL上下文
glfwMakeContextCurrent(window);
// 收到窗体的关闭信号
while(!glfwWindowShouldClose(window)) {
// 渲染函数
render(window);
// 消息传递函数,只有设置了这个函数,窗体才会收到事件
glfwPollEvents();
}
glfwTerminate();
return 0;
}
阅读完官网教程之后,对 Example_Code进行编译
g++ main.cpp `pkg-config --cflags glfw3` `pkg-config --static --libs glfw3` -o main
网友评论