OpenGL相关功能软件开发(Glut, FreeGlut, Glew, glfw etc...)
OpenGL相关功能软件开发(Glut, FreeGlut, Glew, glfw etc…)
OpenGL是一个非常强大的跨平台交互平台,提供开放式图形库功能,提供了多种API去做2D和3D的矢量图。OpenGL可以用于CAD、虚拟现实、科学可视化程序和电子游戏开发。OpenGL本质上并非API,其实是Chronos Group开发维护的一套规范,定义了一系列三百多函数用于图形操作的API。硬件比如GPU开发的厂商,有硬件翻译API的指令,根据OpenGL的规范来开发。另外如果硬件上无法满足OpenGL的功能,则可以通过类似软渲染的方式来实现相关功能。
OpenGL通过上下文(context)的信息,比如顶点坐标,纹理和上色器信息等会渲染信息会储存为一个数据结构,来控制计算机进行图形的渲染。
GLFW——跨平台窗口和键盘、鼠标、手柄处理;偏向游戏
freeglut——跨平台窗口和键盘、鼠标处理;API 是 GLUT API 的超集,同时也比 GLUT 更新、更稳定
GLUT——早期的窗口处理库,已不再维护
支持创建 OpenGL 窗口的还有一些“多媒体库”,同时还支持输入、声音等类似游戏的程序所需要的功能:
Allegro 5——跨平台多媒体库,提供针对游戏开发的 C API
SDL——跨平台多媒体库,提供 C API
SFML——跨平台多媒体库,提供 C++ API;同时也提供 C#、Java、Haskell、Go 等语言的绑定
窗口包
FLTK——小型的跨平台 C++ 窗口组件库
Qt——跨平台 C++ 窗口组件库,提供许多OpenGL辅助对象
wxWidgets——跨平台 C++ 窗口组件库
link:https://zh.wikipedia.org/wiki/OpenGL
link: https://www.cnblogs.com/chencarl/p/10722839.html
下面介绍怎么在VS2017的环境中 #include <glfw.h> 因为GLFW是一个开源API平台,引入源码后,在解释器中设置,可以在调试的过程中,进入源码,非常适合初学者。
glfw库和源码下载
解压后,把对应的文件加入到project列表下:
设置project->properties:
->C/C+±>General->Additional Include Directories
->Linker->General->Additional Library Directories
->Linker->Input->Additional Dependencies (Static lib)
->C/C+±>Preprocessor->Preprocessor Definitions (Dyna lib)
跑一段例程代码:
#include <iostream>
#include <GLFW/glfw3.h>
int main(void)
{
GLFWwindow* window;
/* Initialize the library */
if (!glfwInit())
return -1;
/* Create a windowed mode window and its OpenGL context */
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
/* Make the window's context current */
glfwMakeContextCurrent(window);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window))
{
/* Render here */
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.0f, 0.5f);
glVertex2f(0.5f, -0.5f);
glEnd();
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
glfwTerminate();
return 0;
}