Ubuntu 12.04上的OpenGL 4教程
Tutorial OpenGL 4 on Ubuntu 12.04
我使用的是Ubuntu 12.04,我已经安装了OpenGL4。
我还有一个支持CUDA的NVIDIA显卡。请注意,我一直在我的电脑上用CUDA进行并行计算,这很有效。
[eeuser@roadrunner sample_opengl]$ glxinfo | grep gl
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
server glx extensions:
client glx vendor string: NVIDIA Corporation
client glx version string: 1.4
client glx extensions:
GL_ARB_texture_query_lod, GL_ARB_texture_rectangle, GL_ARB_texture_rg,
GL_NV_texture_multisample, GL_NV_texture_rectangle, GL_NV_texture_shader,
我无法让一个简单的程序工作。有人能提供一个可以在我的电脑上工作的示例程序吗
这是我正在使用的代码:
#include <GL/glew.h> // include GLEW and new version of GL on Windows
#include <GLFW/glfw3.h> // GLFW helper library
#include <stdio.h>
int main () {
// start GL context and O/S window using the GLFW helper library
if (!glfwInit ()) {
fprintf (stderr, "ERROR: could not start GLFW3n");
return 1;
}
// uncomment these lines if on Apple OS X
/*glfwWindowHint (GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint (GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint (GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint (GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);*/
GLFWwindow* window = glfwCreateWindow (640, 480, "Hello Triangle", NULL, NULL);
if (!window) {
fprintf (stderr, "ERROR: could not open window with GLFW3n");
glfwTerminate();
return 1;
}
glfwMakeContextCurrent (window);
// start GLEW extension handler
glewExperimental = GL_TRUE;
glewInit ();
// get version info
const GLubyte* renderer = glGetString (GL_RENDERER); // get renderer string
const GLubyte* version = glGetString (GL_VERSION); // version as a string
printf ("Renderer: %sn", renderer);
printf ("OpenGL version supported %sn", version);
// tell GL to only draw onto a pixel if the shape is closer to the viewer
glEnable (GL_DEPTH_TEST); // enable depth-testing
glDepthFunc (GL_LESS); // depth-testing interprets a smaller value as "closer"
/* OTHER STUFF GOES HERE NEXT */
// close GL context and any other GLFW resources
glfwTerminate();
return 0;
}
我试着用-编译
g++ main2.cpp -lglut -lGL -lGLEW -lGLU
我得到一个错误:
main2.cpp:2:47: fatal error: GLFW/glfw3.h: No such file or directory
compilation terminated.
我现在想知道这个GLFW是什么?更确切地说,我该如何安装它?关注@epeart我将libglfw安装为-
sudo apt-get install libglfw-dev
仍然得到以下错误
main2.cpp: In function ‘int main()’:
main2.cpp:18:2: error: ‘GLFWwindow’ was not declared in this scope
main2.cpp:18:14: error: ‘window’ was not declared in this scope
main2.cpp:18:79: error: ‘glfwCreateWindow’ was not declared in this scope
main2.cpp:24:32: error: ‘glfwMakeContextCurrent’ was not declared in this scope
为GLFW:sudo apt-get install libglfw3-dev
安装"dev"包
警告:您从包管理器获得的版本可能已过期。
您可以按照此处或此处的说明进行操作。
我试着用-编译
g++ main2.cpp -lglut -lGL -lGLEW -lGLU
当你想使用GLFW时,为什么要链接GLUT?此外,您的程序不需要GLU。试试这个:
g++ main2.cpp -lGL -lGLEW -lglfw
警告:自从这个答案变成后,这个问题发生了很大的变化
"我尝试了一些教程,但我无法让一个简单的程序工作",我想,鉴于你之前所说的,你的CUDA程序在Windows上工作,只是在Ubuntu上不工作?
1) 试着先安装一个更新的Ubuntu版本(如果你可以在那台电脑上选择的话)。12.04有点旧,如果你没有充分的理由(即这是一台公司电脑,你会违反升级政策,诸如此类),你可能不应该使用它。
2) 尝试为您的卡安装专有的NVIDIA驱动程序(这也应该为您提供NVIDIA OpenGL实现);您可能安装了mesa
。我想目前的mesa
版本至少有一些GPGPU支持,但我不确定它们是否支持CUDA(如果你不是特别喜欢CUDA,你也可以尝试OpenCL,你可能会有更好的机会。尽管你仍然很有可能需要专有的NVIDIA驱动程序)。
GLFW是一个用于创建窗口、在其中设置OpenGL并提供对输入函数等的访问的辅助库。在这方面,它与您似乎熟悉的GLUT类似,但却是一个更现代的替代方案。你当然需要安装它才能使用它。你应该可以像往常一样通过Ubuntus软件包管理器安装它,试试apt-cache search glfw
,它可以帮助你找到确切的软件包名称。如果有多个"lib"版本,请安装以-dev
结尾的版本。
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 了解 GLM- openGL 中的相机转换
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- OpenGL大的3D纹理(>2GB)非常慢
- OpenGl glm rotate
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- OpenGL在启用深度测试时不会丢弃我的碎片
- OpenGL相机和相机空间转型的困惑
- OpenGL将纹理四边形渲染为(0,0)
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 发布旋转矩阵(openGL/glm)
- Arcsynthesis OpenGL 3.3 教程的问题 - MAKE 错误
- 适合初学者的最佳 OpenGL 教程 - 对象/光
- 安东的OpenGL你好三角形教程上的黑屏
- OpenGL与OpenCV结合的计算机视觉教程
- "O_RDONLY"、"F_SETFL"'O_NONBLOCK'遵循 OpenGL 教程时未声明的错误
- Ubuntu 12.04上的OpenGL 4教程
- c++ /OpenGL教程(导入图像)后的问题
- OpenGL教程错误