OpenGL
Introduce
OpenGL 是作为一种硬件的图形规范设计的,主要的交互是通过GLSL(GL Shader Language) 使用显卡渲染图像。OpenGL只负责图像渲染部分,对于窗口管理,系统事件则由一些特定平台的窗口管理器负责例如(GLFW)就支持跨平台。其它如GLUT,freeglut和GLFW是做同样的事。
- GLEW, OpenGL扩展加载库, 提供动态加载目标平台(win,linux)支持那些扩展,猜测像是Nvidia显卡openGL扩展
- GLFW, OpenGL图像框架, 用于创建窗口,和管理OpenGL Context, 监听系统事件(键盘,鼠标)
- GLM, OpenGL Math库,图像数学算法库
First Start
Never easy first thing.
- testopengl.cpp
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>
using namespace std;
void init(GLFWwindow* win){}
void display(GLFWwindow* win,double currentTime){
glClearColor(1.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
}
int main(void){
if (!glfwInit()){
exit(EXIT_FAILURE);
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
GLFWwindow* win = glfwCreateWindow(600,600,"title",NULL,NULL);
glfwMakeContextCurrent(win);
if(glewInit()!=GLEW_OK){
exit(EXIT_FAILURE);
}
glfwSwapInterval(1);
init(win);
while(!glfwWindowShouldClose(win)){
display(win,glfwGetTime());
glfwSwapBuffers(win);
glfwPollEvents();
}
glfwDestroyWindow(win);
glfwTerminate();
exit(EXIT_SUCCESS);
}
库依赖
libgl
libglew
libglfw3
# Install to Ubuntu
sudo apt install -y libgl-dev libglew-dev libglfw3-dev
编译
g++ testopengl.cpp -o testopengl.o -lGL -lglfw -lGLEW
use cmake
添加link library
target_link_libraries(opengl_cpp_test_demo GL glfw GLEW)