百度网站官网入口,做网站都需要准备什么软件,加强旅游网站建设,wordpress 用户文章数文章目录 1、简介1.1 OpenGL简介1.2 glut简介1.3 freeglut 2、glut安装2.1 命令安装glut2.2 源码安装glut 3、glut测试3.1 测试1#xff0c;版本打印3.2 测试2#xff0c;绘制三角形3.3 测试3#xff0c;VBO绘制三角形 结语 1、简介
1.1 OpenGL简介
OpenGL作为图形界的工业… 文章目录 1、简介1.1 OpenGL简介1.2 glut简介1.3 freeglut 2、glut安装2.1 命令安装glut2.2 源码安装glut 3、glut测试3.1 测试1版本打印3.2 测试2绘制三角形3.3 测试3VBO绘制三角形 结语 1、简介
1.1 OpenGL简介
OpenGL作为图形界的工业标准其仅仅定义了一组2D和3D图形接口API而对于窗口管理、IO消息响应等并没有规定。也就是说OpenGL依赖各平台提供用于渲染的context以及具体实现方式而各平台提供的实现不尽相同。这些实现主要有Windows平台下的WGL、Linux下的Mesa/GLX、Mac OS X下的Cocoa/NSGL以及跨平台的GLUT、GLFW、SDL等等。
安装OpenGL库
# sudo apt-get install build-essential libxmu-dev libxi-dev libgl-dev
sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev使用如下的命令来查看对应显卡的OpenGL版本
glxinfo | grep -i opengl1.2 glut简介
https://www.opengl.org/resources/libraries/glut/glut_downloads.php
http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip
https://www.opengl.org/resources/libraries/glut/glut-3.spec.pdf
OpenGL工具库 OpenGL Utility Toolkit包含大约30多个函数函数名前缀为glut。
glut是不依赖于窗口平台的OpenGL工具包由Mark KLilgrad在SGI编写现在在Nvidia目的是隐藏不同窗口平台API的复杂度。 函数以glut开头它们作为aux库功能更强的替代品提供更为复杂的绘制功能此函数由glut.dll来负责解释执行。由于glut中的窗口管理函数是不依赖于运行环境的因此OpenGL中的工具库可以在X-Window, Windows NT, OS/2等系统下运行特别适合于开发不需要复杂界面的OpenGL示例程序。对于有经验的程序员来说一般先用glut理顺3D图形代码然后再集成为完整的应用程序。
1.3 freeglut
https://freeglut.sourceforge.net/ https://github.com/freeglut/freeglut/releases freeglut最初由帕维尔·W. Olszta与安德烈亚斯·乌姆巴赫和史蒂夫·贝克的贡献。史蒂夫是现在官方的拥有者/维护者。帕维尔在1999年12月1日开始freeglut的开发。目前该项目几乎可以100%的替代原来的GLUT只有少数差别如the abandonment of SGI-specific features按钮盒子和动态视频分辨率和 其他一小部分程序Bug。
这个库是原始的GLUT库修改之后得到的它既提供32位、也提供64位的编译环境。
2、glut安装
2.1 命令安装glut
# sudo apt-get install build-essential freeglut3 freeglut3-dev
# sudo apt-get install libglut-dev or
sudo apt-get install freeglut3-devlocate freeglutsudo apt-get remove freeglut3
# or
sudo apt-get -y autoremove freeglut3
# or
sudo apt-get -y purge freeglut3
# or
sudo apt-get -y autoremove --purge freeglut3在卸载freeglut库之后编译测试项目如下
2.2 源码安装glut
1glut 如果安装 GLUT地址在https://user.xmission.com/~nate/glut.html下载 glut-3.7.6-bin.zip已经十几年没更新过了所以就是这个版本了 https://user.xmission.com/~nate/glut/glut-3.7.6-bin.zip2freeglut freeglut 在地址https://github.com/freeglut/freeglut/releases/download/v3.6.0/freeglut-3.6.0.tar.gz
3、glut测试
3.1 测试1版本打印
CMakeLists.txt
cmake_minimum_required(VERSION 2.8.1)project(my_project)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 14)# seach
find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)# include
include_directories(${OPENGL_INCLUDE_DIRS})
include_directories(${GLUT_INCLUDE_DIRS})add_executable(${PROJECT_NAME} main.cpp)target_link_libraries(${PROJECT_NAME} ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES})main.cpp #include iostream
#include GL/freeglut.hint main(int argc, char** argv)
{std::cout hello, yxy std::endl;glutInit(argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);glutInitWindowSize(300, 300);glutInitWindowPosition(100, 100);glutCreateWindow(OpenGL Version);const GLubyte* szVendor glGetString(GL_VENDOR);const GLubyte* szRender glGetString(GL_RENDERER);const GLubyte* szGLVersion glGetString(GL_VERSION);const GLubyte* szGluVersion gluGetString(GLU_VERSION);printf(OpenGL实现厂商的名字%s\n, szVendor);printf(OpenGL渲染器标识符%s\n, szRender);printf(OpenGL实现的版本号%s\n, szGLVersion);printf(GLU工具库版本%s\n, szGluVersion);return 0;
}编译如下 或者直接使用gcc编译
gcc -o test main.c -lGL -lGLU -lglut
# or
apt-get install libglew-dev
g -o test main.cpp -lGL -lGLU -lglut -lGLEW3.2 测试2绘制三角形
main.cpp
#include GL/freeglut.hvoid renderScene(void)
{glClearColor(1.0, 1.0, 0.6, 1.0);glClear(GL_COLOR_BUFFER_BIT);glLoadIdentity();glBegin(GL_TRIANGLES);glColor3f(1, 0, 0);glVertex3f(-0.5, -0.5, 0.0);glColor3f(0, 1, 0);glVertex3f(0.5, 0.0, 0.0);glColor3f(0, 0, 1);glVertex3f(0.0, 0.5, 0.0);glEnd();glutSwapBuffers();
}int main(int argc, char** argv)
{glutInit(argc, (char**)argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);glutInitWindowPosition(100, 100);glutInitWindowSize(800, 480);glutCreateWindow(yxy glut: draw triangle);glutDisplayFunc(renderScene);glutMainLoop();return 0;
}测新项目运行如下
3.3 测试3VBO绘制三角形
CMakeLists.txt
cmake_minimum_required(VERSION 2.8.1)project(my_project)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 14)# seach
find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)
find_package(GLEW REQUIRED)# include
include_directories(${OPENGL_INCLUDE_DIRS})
include_directories(${GLUT_INCLUDE_DIRS})add_executable(${PROJECT_NAME} main.cpp)target_link_libraries(${PROJECT_NAME} ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES} GLEW::GLEW)main.cpp
#include stdio.h
#include GL/glew.h
#include GL/freeglut.hGLuint VBO;static void RenderSceneCB()
{glClear(GL_COLOR_BUFFER_BIT);glEnableVertexAttribArray(0);glBindBuffer(GL_ARRAY_BUFFER, VBO);glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);glDrawArrays(GL_TRIANGLES, 0, 3);glDisableVertexAttribArray(0);glutSwapBuffers();
}static void InitializeGlutCallbacks()
{glutDisplayFunc(RenderSceneCB);
}static void CreateVertexBuffer()
{const GLfloat Vertices[] {-1.0f, -1.0f, 0.0f,1.0f, -1.0f, 0.0f,0.0f, 1.0f, 0.0f};glGenBuffers(1, VBO);glBindBuffer(GL_ARRAY_BUFFER, VBO);glBufferData(GL_ARRAY_BUFFER, sizeof(Vertices), Vertices, GL_STATIC_DRAW);
}int main(int argc, char** argv)
{glutInit(argc, argv);glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);glutInitWindowSize(800, 600);glutInitWindowPosition(0, 0);glutCreateWindow(yxy glut: VBO triangle );InitializeGlutCallbacks();// Must be done after glut is initialized!GLenum res glewInit();if (res ! GLEW_OK) {fprintf(stderr, Error: %s\n, glewGetErrorString(res));return 1;}glClearColor(0.6f, 0.6f, 0.6f, 1.0f);CreateVertexBuffer();glutMainLoop();return 0;
}测新项目运行如下
结语
如果您觉得该方法或代码有一点点用处可以给作者点个赞或打赏杯咖啡╮(▽)╭ 如果您感觉方法或代码不咋地//(ㄒoㄒ)//就在评论处留言作者继续改进o_O??? 如果您需要相关功能的代码定制化开发可以留言私信作者(✿◡‿◡) 感谢各位大佬童鞋们的支持( ´ ▽´ ) ( ´ ▽´)っ