标签: opengl

CMake在Ubuntu中找不到OpenGL

我想在Ubuntu中安装VTK.CMake发给我这个错误:

/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108中的CMake错误(消息):找不到OpenGL(缺少:OPENGL_gl_LIBRARY OPENGL_INCLUDE_DIR)调用堆栈(最近一次调用):/
usr/share/cmake-2.8 /Modules/FindPackageHandleStandardArgs.cmake:315(_FPHSA_FAILURE_MESSAGE)/usr/share/cmake-2.8/Modules/FindOpenGL.cmake:161(FIND_PACKAGE_HANDLE_STANDARD_ARGS
)
渲染/ OpenGL/CMakeLists.txt:196(find_package)

CMake错误:此项目中使用以下变量,但它们设置为NOTFOUND.请设置它们或确保它们在CMake文件中正确设置和测试:OPENGL_INCLUDE_DIR(ADVANCED)用作目录/home/pilou/Documents/src/VTK-6.2.0/Geovis/Core中的包含目录

因此我安装了freeglut3和build-essential(正如我在互联网上看到的那样).但一切都没有改变.

我怎么能找到opengl写我自己的链接到CMake?我还能做些什么来安装VTK?

opengl ubuntu cmake

24
推荐指数
2
解决办法
2万
查看次数

使用GLEW在Windows下使用OpenGL扩展

我一直在Windows上使用OpenGL扩展这种痛苦的方式.GLEW是更容易的方式吗?我该如何开始使用它?

opengl glew

23
推荐指数
2
解决办法
4万
查看次数

对于非游戏,OpenGL仍然优于Direct3D?

标准模型是OpenGL用于专业应用程序(CAD),Direct3D用于游戏.

随着openGL 3.0的崩溃,openGl仍然是技术3D应用程序(cad/GIS)的自然选择吗?
是否有Direct3D的场景图库?

(当然Direct3D只是windows.)

opengl directx direct3d

23
推荐指数
3
解决办法
7906
查看次数

OpenGL,GTK和QT库之间有什么区别?

我理解GTK,QT或其他图形工具包的目的.但我不明白OpenGL的作用.它只是另一个GUI库还是指更基本的东西?如果是这样,它是什么以及何时应该在日常黑客中使用它?

opengl graphics

23
推荐指数
4
解决办法
2万
查看次数

在图形硬件上浮动vs双倍

我一直试图找到有关在图形硬件上使用float vs double的性能的信息.我已经在CPU上找到了关于float vs double的大量信息,但是GPU的这种信息更加稀缺.

我使用OpenGL进行编码,因此,如果您认为应该知道该API的任何特定信息,那就让我们了解一下.

我知道如果程序将大量数据移入/移出图形硬件,那么使用浮点数可能会更好,因为双倍需要两倍的带宽.我的询问更多的是图形硬件如何处理它.据我所知,现代英特尔CPU将浮点/双精度转换为80位实数进行计算(不包括SSE指令),因此这两种类型的速度同样快.现代显卡做这样的事吗?浮动和双重表现现在大致相等?是否有任何强有力的理由使用一个而不是另一个?

opengl floating-point double graphics

23
推荐指数
2
解决办法
1万
查看次数

OpenGL:scale然后翻译?如何?

我有一些二维几何.我想在我的几何体周围采用一些边界矩形,然后在平面上的其他地方渲染一个较小的版本.这里或多或少是我必须进行缩放和翻译的代码:

// source and dest are arbitrary rectangles.
float scaleX = dest.width / source.width;
float scaleY = dest.height / source.height;
float translateX = dest.x - source.x;
float translateY = dest.y - source.y;

glScalef(scaleX, scaleY, 0.0);
glTranslatef(translateX, translateY, 0.0);
// Draw geometry in question with its normal verts.
Run Code Online (Sandbox Code Playgroud)

当dest原点为0时,这与给定维度的预期完全一样.但是,如果x的原点非零,则结果仍然正确缩放但看起来像(?)它被转换为该轴上接近零的值无论如何 - 事实证明它与dest.x为零并不完全相同.

有人能指出一些我不知道的明显事物吗?

谢谢!

最终更新根据下面的Bahbar和Marcus的答案,我做了一些实验并解决了这个问题.亚当鲍文的评论是提示.我错过了两个重要的事实:

  1. 我需要围绕我关心的几何体的中心进行缩放.
  2. 我需要以直觉的相反顺序应用变换(对我而言).

回想起来,第一种是显而易见的.但对于后者,对于像我这样的其他优秀程序员/坏数学家:原来我的直觉是在红皮书所谓的"大型,固定坐标系统"中运行,其中有一个绝对平面,你的几何形状在四处移动那架飞机使用变形.这是可以的,但考虑到将多个变换堆叠成一个矩阵背后的数学性质,它与事物真正起作用的方式相反(请参阅下面的答案或红皮书了解更多信息).基本上,变换以"相反的顺序""应用"它们在代码中的出现方式.这是最终的工作解决方案:

// source and dest are arbitrary rectangles.
float scaleX = dest.width / source.width;
float scaleY = dest.height / source.height;
Point sourceCenter …
Run Code Online (Sandbox Code Playgroud)

opengl graphics transform

23
推荐指数
2
解决办法
4万
查看次数

What is the point of GLSL when there is OpenCL?

Consider this the complete form of the question in the title: Since OpenCL may be the common standard for serious GPU programming in the future (among other devices programming), why not when programming for OpenGL - in a future-proof way - utilize all GPU operations on OpenCL? That way you get the advantages of GLSL, without its programmatic limitations.

opengl graphics gpgpu glsl opencl

23
推荐指数
1
解决办法
6459
查看次数

设置OpenGL多个渲染目标

我已经看过很多关于这个主题的材料,但是我发现的例子之间存在一些差异,而且我很难深入了解正确的过程.希望有人可以告诉我,如果我走在正确的轨道上.我还应该提到我在OS X Snow Leopard和最新版本的Xcode 3上做这个.

举个例子,假设我想写两个目标,一个用于普通,一个用于颜色.为此,我创建了一个帧缓冲区并将两个纹理绑定到它,以及深度纹理:

glGenFramebuffersEXT(1, &mFBO);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, mFBO);

glGenTextures(1, &mTexColor);
glBindTexture(GL_TEXTURE_2D, mTexColor);
//<texture params>
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, mTexColor, 0);

glGenTextures(1, &mTexNormal);
glBindTexture(GL_TEXTURE_2D, mTexNormal);
//<Texture params>
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, GL_TEXTURE_2D, mTexNormal, 0);

glGenTextures(1, &mTexDepth);
glBindTexture(GL_TEXTURE_2D, mTexDepth);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, w, h, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, NULL);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, mTexDepth, 0);

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0)
Run Code Online (Sandbox Code Playgroud)

在渲染之前,我会再次绑定帧缓冲,然后执行:

GLenum buffers[] = { GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT };
glDrawBuffers(2, buffers); …
Run Code Online (Sandbox Code Playgroud)

opengl framebuffer

23
推荐指数
1
解决办法
2万
查看次数

有没有办法在GTK3应用程序中拥有OpenGL上下文?

我看了一下GtkGlExt,但它只适用于GTK2.不幸的是,经过几个小时的搜索,似乎没有人会像OpenGLDrawingArea那样照顾...

任何信息都将受到欢迎.即使它像"现在不可能".

c c++ linux opengl gtk3

23
推荐指数
1
解决办法
4095
查看次数

OpenGL,VAO和多个缓冲区

我正在使用OpenGL编写一个小图形引擎(通过带有C#的OpenTK).

为了定义顶点属性,我有一个VertexDeclaration类,其中包含一个VertexElement结构数组,这些结构映射到glEnableVertexAttribArray/glVertexAttribPointer调用.

此外,为了支持多个顶点流,我有一个特殊的结构,包含顶点缓冲区,顶点声明,顶点偏移和实例频率(如XNA的VertexBufferBinding结构).

目前,每当调用一个绘图调用时,我迭代所有设置的顶点流并绑定它们的顶点缓冲区,应用顶点声明,禁用未使用的顶点属性并绘制基元.

我想使用VAO将glEnableVertexAttribArray调用缓存到它们中,并且每当应用顶点流时,绑定VAO并更改其数组缓冲区绑定.

这是VAO的正确用法吗?

opengl

23
推荐指数
1
解决办法
2万
查看次数

标签 统计

opengl ×10

graphics ×4

c ×1

c++ ×1

cmake ×1

direct3d ×1

directx ×1

double ×1

floating-point ×1

framebuffer ×1

glew ×1

glsl ×1

gpgpu ×1

gtk3 ×1

linux ×1

opencl ×1

transform ×1

ubuntu ×1