Questions tagged «opengl»

OpenGL(开放图形库)是一种图形标准和API,与平台无关,可用于台式机,工作站和移动设备。它旨在提供硬件加速的渲染,因此与传统的软件渲染相比,性能大大提高。OpenGL用于CAD软件和计算机游戏等应用程序。OpenGL标准以及OpenGL ES由Khronos组控制。

2
glVertexAttribPointer澄清
只是要确保我正确理解了这一点(我会在SO Chat上询问,但它在那里死了!): 我们有一个顶点数组,通过绑定它使它成为“当前”, 然后我们有一个缓冲区,我们将其绑定到一个目标, 然后填充该目标,通过glBufferData 它实质上填充了绑定到该目标的任何东西,即我们的缓冲区 然后我们调用glVertexAttribPointer,它描述了数据的布局方式-数据绑定了什么GL_ARRAY_BUFFER ,该描述符保存到我们原来的顶点数组中 (1)我的理解正确吗?有关所有内容之间如何关联 的文档很少。 (2)是否存在某种默认的顶点数组?因为我忘记/忽略了glGenVertexArrays,glBindVertexArray如果没有它,我的程序可以正常工作。 编辑:我错过了一步glEnableVertexAttribArray。 (3)是否同时glVertexAttribPointer调用了与顶点数组绑定的顶点属性,然后我们可以随时启用/禁用该attrib glEnableVertexAttribArray,而不管当前绑定了哪个顶点数组? 或(3b)是否glEnableVertexAttribArray同时调用glEnableVertexAttribArray了与顶点数组绑定的顶点属性,因此当绑定了不同的顶点数组时,我们可以通过在不同的时间调用将相同的顶点属性添加到多个顶点数组中?
94 opengl 


3
如何在OpenGL中使用glOrtho()?
我不了解的用法glOrtho。有人可以解释它的用途吗? 是否用于设置xy和z坐标限制的范围? glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); 这意味着x,y和z范围是-1到1?
87 c++  c  opengl 

6
OpenGL坐标系是左手系还是右手系?
我正在尝试了解OpenGL坐标系。但是,有些教程说默认坐标系是左手的(请参见http://www.c-sharpcorner.com/UploadFile/jeradus/OpenGLBasics11172005014307AM/OpenGLBasics.aspx),而其他教程则说它是右手的(请参见http:// www .falloutsoftware.com / tutorials / gl / gl0.htm)。哪个是对的?我知道我们可以通过镜像将一个变换为另一个,但是我想知道默认坐标。

4
OpenGL如何在最低级别工作?[关闭]
在这里很难说出要问什么。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 9年前关闭。 我了解如何编写OpenGL / DirectX程序,并且了解其背后的数学知识和概念性知识,但是我很好奇GPU-CPU的通信在低级如何工作。 假设我有一个用C编写的OpenGL程序,该程序显示一个三角形并将相机旋转45度。当我编译该程序时,它将变成一系列的ioctl调用,然后gpu驱动程序将适当的命令发送到gpu,在那里旋转三角形并以适当的颜色设置适当的像素的所有逻辑都被连接了在?还是将程序编译成一个“ gpu程序”,然后将其加载到gpu上并计算旋转等?还是完全不同的东西? 编辑:几天后,我发现了该文章系列,基本上可以回答这个问题:http : //fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part- 1 /
84 opengl  gpu 

2
片段着色器如何知道用于像素颜色的变量?
我看到了很多不同的片段着色器, #version 130 out vec4 flatColor; void main(void) { flatColor = vec4(0.0,1.0,0.0,0.5); } 它们都为“输出颜色”使用了一个不同的变量(在这种情况下flatColor)。那么OpenGL如何知道您要做什么? 我猜这行得通,因为flatColor唯一的变量定义为out,但是您可以添加更多out变量,不是吗?还是会崩溃? 实际上,作为测试,我只是运行了此命令: #version 330 in vec2 TexCoord0; uniform sampler2D TexSampler; out vec4 x; out vec4 y; void main() { y = texture2D(TexSampler, TexCoord0.xy); } 无论我使用x还是,效果都很好y。 此外,我们有一个预定义的gl_FragColor。有什么区别,为什么人们通常坚持使用自己的变量?
82 opengl  glsl 

3
Python-找不到记录程序“ OpenGL.error”的处理程序
好的,这是什么,为什么它会在Win2003服务器上而不是在WinXP上发生。 它似乎根本不影响我的应用程序,但是当我关闭应用程序时收到此错误消息。而且很烦人(因为错误消息应该如此)。 我正在使用pyOpenGl和wxPython做图形工作。不幸的是,我是一个接管了这个Python应用程序的C#程序员,我必须学习Python才能做到这一点。 我可以提供代码和版本号等,但是我仍在学习技术知识,因此将不胜感激。 Python 2.5,wxPython和pyOpenGL


10
不使用gluSphere()在OpenGL中绘制Sphere?
是否有任何教程可以解释如何无需使用OpenGL在OpenGL中绘制球体gluSphere()? OpenGL的许多3D教程都在立方体上。我已经搜索过,但是大多数使用绘制球体的解决方案都可以使用gluSphere()。还有具有代码在绘制球体网站这个网站,但它并不能解释背后绘制球体数学。我还有其他版本的方法,如何在该链接中以多边形而不是四边形绘制球体。但是同样,我不明白如何用代码绘制球体。我希望能够进行可视化,以便在需要时可以修改球体。
80 c++  opengl  geometry 

4
OpenGL VAO最佳做法
我面临的问题是我认为取决于VAO,但我不确定。 我不确定VAO的正确用法,我在GL初始化过程中曾经做过的事情很简单 glGenVertexArrays(1,&vao) 跟一个 glBindVertexArray(vao) 之后,在我的绘制管道中,我只调用了glBindBuffer(),glVertexAttribPointer(),glEnableVertexAttribArray()等。 这是正确的做法吗?
79 opengl  opengl-3  vao 

10
OpenGL vs. OpenCL,选择哪个,为什么选择?
哪些功能使OpenCL可以在GLSL和GLSL上进行计算,从而成为唯一的选择?尽管图形相关的术语和不切实际的数据类型,OpenGL是否有真正的警告? 例如,可以通过使用其他纹理将a渲染到纹理来完成并行函数评估。缩小操作可以通过迭代渲染越来越小的纹理来完成。另一方面,不可能以任何有效的方式进行随机写访问(唯一的方法是通过纹理驱动的顶点数据渲染三角形)。OpenCL有可能吗?OpenGL无法实现的其他功能?
78 opengl  opencl  gpgpu 


5
glBindVertexArrays vs glBindBuffer的作用是什么,它们之间的关系是什么?
我是OpenGL和Graphics Programming的新手。到目前为止,我一直在阅读一本非常详尽且编写得很好的教科书,但是我碰到了我不太了解的代码中的一个要点,在此之前我想先了解一下这些内容继续。 GLuint abuffer; glGenVertexArrays(1, &abuffer); glBindVertexArray(abuffer); GLuint buffer; glGenBuffers(1, &buffer); glBindBuffer(GL_ARRAY_BUFFER, buffer); glBufferData(GL_ARRAY_BUFFER, sizeof(points), points, GL_STATIC_DRAW); 该书解释说,前三行正在创建一个顶点数组对象,该对象用于将关联数据与顶点数组捆绑在一起。第二行找到一个未使用的名称(我猜是存储在中的一个无符号整数标识符abuffer),第三行创建了对象/使其成为活动对象。 这本书解释说,第4-7行创建了一个缓冲区对象来存储我们的数据,第5行给出了一个未使用的标识符(类似于顶点数组对象的第2行?),第6行创建了缓冲区,第7行创建了缓冲区这行代码在CPU上分配了足够的内存,并为我们的数据(点)创建了一个指针GL_STATIC_DRAW。 该对象处于活动状态意味着什么?您随后何时使用abuffer?顶点数组捆绑关联的数据是什么意思,数据何时与该顶点数组对象关联? 我对abuffer和之间的关系感到困惑buffer。我对顶点数组与缓冲区对象的关系以及在什么时候形成该关系感到困惑。我不确定它们是否确实相关,但是它们在教科书中紧接着出现。 任何帮助,将不胜感激。谢谢。
75 c++  opengl 

2
创建统一的GLSL数组?
我想离开OpenGL的灯,自己做。我希望我的着色器允许可变数量的灯光。 我们可以在GLSL着色器中声明统一数组吗?如果是这样,我们将如何设置这些制服的值?
75 arrays  opengl  glsl  shader 

4
将值列表传递给片段着色器
我想将值列表发送到片段着色器中。它可能是单精度浮点数很大(两千个项目长)的列表。片段着色器需要对该列表的随机访问,我想刷新每个帧上CPU的值。 我正在考虑如何做到这一点的选择: 作为数组类型的统一变量(“ uniform float x [10];”)。但是这里似乎有限制,在我的GPU上发送数百个值非常慢,而且当我想在运行时更改它时,我还必须在着色器中硬编码上限。 作为高度为1且宽度为列表的纹理,然后使用glCopyTexSubImage2D刷新数据。 其他方法?我最近还没有跟上GL规范的所有变化,也许还有其他专门为此目的设计的方法吗?
74 opengl  glsl 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.