欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

OpenGL相关功能软件开发(Glut, FreeGlut, Glew, glfw etc...)

程序员文章站 2023-12-26 23:26:03
...

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

OpenGL相关功能软件开发(Glut, FreeGlut, Glew, glfw etc...)
link: https://www.cnblogs.com/chencarl/p/10722839.html

下面介绍怎么在VS2017的环境中 #include <glfw.h> 因为GLFW是一个开源API平台,引入源码后,在解释器中设置,可以在调试的过程中,进入源码,非常适合初学者。

glfw库和源码下载
OpenGL相关功能软件开发(Glut, FreeGlut, Glew, glfw etc...)
解压后,把对应的文件加入到project列表下:
OpenGL相关功能软件开发(Glut, FreeGlut, Glew, glfw etc...)
设置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;
}

OpenGL相关功能软件开发(Glut, FreeGlut, Glew, glfw etc...)

上一篇:

下一篇: