linux 下的 opengl SDK。
opengl 图形库是开放式图形库,最近出了一个freeglut3 我们下载它:
sudo apt-get install freeglut3
sudo apt-get install freeglut3-dev
已经安装好了。但是如果是初学者,看《OpenGl编程指南(第8版时)》发现书中的例子编译不了。
我们再安装点文件,加上opengl 的一些扩展。
加上 mesa 库
dpkg -i libglu1-mesa_9.0.0-2_amd64.deb
上面这个包在linux mint或图班图系统中,共享库是隐藏的,请找到它。
(可在debina linux 共享库找到)实际是libglu1-mesa amd64版
sudo apt-get install mesa-utils
sudo apt-get install mesa-common-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libgles2-mesa
sudo apt-get install libgles2-mesa-dev
sudo apt-get install libglapi-mesa
sudo apt-get install libgl1-mesa-glx
加上 GLEW库
sudo apt-get install libglew2.0
sudo apt-get install libglew-dev
sudo apt-get install glew-utils
例子:
c语言例子:
main.c
#include <GL/glut.h>
#include <stdlib.h>
void init();
void display();
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(0, 0);
glutInitWindowSize(300, 300);
glutCreateWindow("OpenGL 3D View");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glOrtho(-5, 5, -5, 5, 5, 15);
glMatrixMode(GL_MODELVIEW);
gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0, 0);
glutWireTeapot(3);
glFlush();
}使用 gcc -o test main.c -lglut -lGL -lGLU 编译成功
gbbbbb
第二个例子。
C++语言:
triangles.cpp
///////////////////////////////////////////////////////////////////////
//
// triangles.cpp
//
///////////////////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
#include "vgl.h"
#include "LoadShaders.h"
enum VAO_IDs { Triangles, NumVAOs };
enum Buffer_IDs { ArrayBuffer, NumBuffers };
enum Attrib_IDs { vPosition = 0 };
GLuint VAOs[NumVAOs];
GLuint Buffers[NumBuffers];
const GLuint NumVertices = 6;
//---------------------------------------------------------------------
//
// init
//
void
init(void)
{
glGenVertexArrays(NumVAOs, VAOs);
glBindVertexArray(VAOs[Triangles]);
GLfloat vertices[NumVertices][2] = {
{ -0.90, -0.90 }, // Triangle 1
{ 0.85, -0.90 },
{ -0.90, 0.85 },
{ 0.90, -0.85 }, // Triangle 2
{ 0.90, 0.90 },
{ -0.85, 0.90 }
};
glGenBuffers(NumBuffers, Buffers);
glBindBuffer(GL_ARRAY_BUFFER, Buffers[ArrayBuffer]);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices),vertices, GL_STATIC_DRAW);
ShaderInfo shaders[] = {
{ GL_VERTEX_SHADER, "triangles.vert" },
{ GL_FRAGMENT_SHADER, "triangles.frag" },
{ GL_NONE, NULL }
};
GLuint program = LoadShaders(shaders);
glUseProgram(program);
glVertexAttribPointer(vPosition, 2, GL_FLOAT,
GL_FALSE, 0, BUFFER_OFFSET(0));
glEnableVertexAttribArray(vPosition);
}
//---------------------------------------------------------------------
//
// display
//
void
display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBindVertexArray(VAOs[Triangles]);
glDrawArrays(GL_TRIANGLES, 0, NumVertices);
glFlush();
}
//---------------------------------------------------------------------
//
// main
//
int
main(int argc, char ** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutInitWindowSize(512, 512);
// glutInitContextVersion(4, 3);
glutInitContextProfile(GLUT_CORE_PROFILE);
glutCreateWindow(argv[0]);
if (glewInit()) {
cerr << "Unable to initialize GLEW ...exiting" << endl;
exit(EXIT_FAILURE);
}
init();
glutDisplayFunc(display);
glutMainLoop();
}编译 gcc -o test triangles.cpp LoadSharders.cpp -lGL -lGLU -lglut -lGLEW -lstdc++

试运行一下。显卡如果识别不了。屏蔽掉 glutInitContextVersion(4,3);这语句就可以了。
另外《OpenGl编程指南》这书源码中有包含库和包含文件头 拷入当前目录 gcc 编译命令加上 -Iinclude -Llib 参数就可以了。

运行正常。
有些系统静态编译不通过。
系统会缺失libGL.a这个静态库,用动态库连接就可以了。
这个库应该在/usr/lib/x86_64-linux-gnu下。
如果找不到 #include <GL/glut.h> 文件把 <> 改成 ""
注意命令行的编译开关位置。
================================================
实际上现在出了一个SDL图形库。
sudo apt-get install freeglut3
sudo apt-get install freeglut3-dev
组合
sudo apt-get install libsdl2-doc libsdl2-dev libsdl2-2.0-0
sudo apt-get install libsdl-image1.2 libsdl-net1.2 libsdl-sound1.2 libsdl1.2debian
扩展
sudo apt-get install libsdl2-gfx-doc libsdl2-gfx-dev
这种搭配,配合opengl使用效果不错。
==============================================
还有问题,那系统重装。
如按上所述做不出来请在文章后留言,文章随时更新。






鄂公网安备42010402000303号