使用glew和glfw进行opengl编程

来源:互联网 发布:域名怎么解析动态ip 编辑:程序博客网 时间:2024/05/16 15:08
freeglut和glut是很多教程使用的,不过现在glfw明显好多了,还有glew是windows下面使用opengl1.1以上版本api的比较好的办法,更重要的是这两个都是跨平台的,用起来真的是很方便的说,
#define GLEW_STATIC#include <stdio.h>#include <stdlib.h>#include <GL/glew.h>#include <GLFW/glfw3.h>char szTitle[64] = "opengl tutorial 001-color triangle";static void error_callback(int error, const char* description){    fputs(description, stderr);}static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods){    if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)        glfwSetWindowShouldClose(window, GL_TRUE);}int main(void){    GLFWwindow * window;    glfwSetErrorCallback(error_callback);    if (!glfwInit()) return -1;    window = glfwCreateWindow(512,400,szTitle,NULL,NULL);    if (!window)    {        glfwTerminate();        exit(EXIT_FAILURE);    }    glfwMakeContextCurrent(window);    glfwSetKeyCallback(window, key_callback);    glewExperimental = GL_TRUE;    glewInit();    while (!glfwWindowShouldClose(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, 1.f, 0.f, 0.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);        glfwPollEvents();    }    glfwDestroyWindow(window);    glfwTerminate();    return 0;}
简单的一个例子
0 0
原创粉丝点击