是的,它是什么,为什么它出现在Win2003服务器上,而不是在WinXP上.
它似乎根本不会影响我的应用程序,但是当我关闭应用程序时,我收到此错误消息.它很烦人(因为错误信息应该是).
我正在使用pyOpenGl和wxPython来完成图形处理.不幸的是,我是一名C#程序员,已经接管了这个Python应用程序,我不得不学习Python来做到这一点.
我可以提供代码和版本号等,但我仍在学习技术的东西,所以任何帮助将不胜感激.
Python 2.5,wxPython和pyOpenGL
我无法理解的用法glOrtho.有人可以解释它的用途吗?
是否用于设置xy和z坐标限制的范围?
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
Run Code Online (Sandbox Code Playgroud)
这意味着x,y和z范围是-1到1?
是否有任何教程解释我如何在OpenGL中绘制球体而不必使用gluSphere()?
许多OpenGL的3D教程都只是在立方体上.我已经搜索了但是大多数绘制球体的解决方案都是使用的gluSphere().还有一个站点具有在此站点绘制球体的代码,但它没有解释绘制球体背后的数学.我还有其他版本的如何在多边形而不是该链接中的四边形绘制球体.但同样,我不明白如何使用代码绘制球体.我希望能够可视化,以便我可以根据需要修改球体.
我面临一个问题,我相信是VAO依赖的,但我不确定..
我不确定VAO的正确用法,我在GL初始化期间做的事情很简单
glGenVertexArrays(1,&vao)
Run Code Online (Sandbox Code Playgroud)
接下来是
glBindVertexArray(vao)
Run Code Online (Sandbox Code Playgroud)
后来,在我的绘图管道中,我只调用glBindBuffer(),glVertexAttribPointer(),glEnableVertexAttribArray()等等,而不关心初始绑定的VAO
这是正确的做法吗?
什么是"即时模式"?举一个代码示例.
我什么时候必须使用立即模式而不是保留模式?使用每种方法的利弊是什么?
我看到很多不同的片段着色器,
#version 130
out vec4 flatColor;
void main(void)
{
flatColor = vec4(0.0,1.0,0.0,0.5);
}
Run Code Online (Sandbox Code Playgroud)
并且它们都使用不同的变量来表示"颜色"(在这种情况下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);
}
Run Code Online (Sandbox Code Playgroud)
无论我使用x还是使用它都很好y.
此外,我们有一个预定义的gl_FragColor.有什么区别,为什么人们通常坚持使用他们自己的变量?
使用GLSL进行计算的OpenCL有哪些特性可供选择?尽管有与图形相关的术语和非实用的数据类型,但对OpenGL有什么实际的警告吗?
例如,可以通过使用其他纹理渲染纹理来完成并行函数评估.减少操作可以通过迭代渲染到越来越小的纹理来完成.另一方面,无法以任何有效的方式进行随机写访问(唯一的方法是通过纹理驱动的顶点数据渲染三角形).这可能与OpenCL有关吗?OpenGL还有什么不可能实现的?
我对矩阵定义感到非常困惑.我有一个矩阵类,它float[16]根据以下观察结果保存一个我认为是行主要的:
float matrixA[16] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
float matrixB[4][4] = { { 0, 1, 2, 3 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 } };
Run Code Online (Sandbox Code Playgroud)
matrixA并且matrixB两者在内存中具有相同的线性布局(即所有数字都按顺序排列).根据http://en.wikipedia.org/wiki/Row-major_order,这表示行主要布局.
matrixA[0] == matrixB[0][0];
matrixA[3] == matrixB[0][3];
matrixA[4] == matrixB[1][0];
matrixA[7] == matrixB[1][3];
Run Code Online (Sandbox Code Playgroud)
因此,matrixB[0]= row 0,matrixB[1]= row 1等.再次,这表示行主要布局. …
我是OpenGL和图形编程的新手.到目前为止,我一直在读一本非常详尽且写得很好的教科书.但是,我在代码中找到了一点,我不太了解,我想在我之前理解这些线条.继续.
GLuint abuffer;
glGenVertexArrays(1, &abuffer);
glBindVertexArray(abuffer);
Run Code Online (Sandbox Code Playgroud)
GLuint buffer;
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(points), points, GL_STATIC_DRAW);
Run Code Online (Sandbox Code Playgroud)
该书解释说,前三行是创建一个顶点数组对象,用于将关联数据与顶点数组捆绑在一起.第二行找到一个未使用的名称(我猜测存储的无符号整数标识符abuffer),第三行创建对象/使其处于活动状态.
这本书解释了第4到第7行创建一个缓冲对象来存储我们的数据,第5行给我们一个未使用的标识符(类似于第2行的顶点数组对象?),第6行创建缓冲区,第7行line在CPU上分配足够的内存并创建指向我们的数据(点)的指针GL_STATIC_DRAW.
对象处于活动状态意味着什么?你abuffer什么时候会用?顶点数组捆绑关联数据是什么意思,以及与此顶点数组对象关联的数据何时?
我对abuffer和之间的关系感到困惑buffer.我对顶点数组与缓冲区对象的关系以及该关系形成的关系感到困惑.我不确定它们是否实际上是相关的,但是它们在教科书中一个接一个地出现.
任何帮助,将不胜感激.谢谢.
我想将一个值列表发送到片段着色器.它是一个可能很大(几千个项目长)的单精度浮标列表.片段着色器需要随机访问此列表,我想在每个帧上刷新CPU的值.
我正在考虑如何做到这一点:
作为数组类型的统一变量("uniform float x [10];").但是这里似乎有限制,在我的GPU上发送超过几百个值非常慢,而且当我宁愿在运行时更改它时,我还必须对着色器中的上限进行硬编码.
作为高度为1且列表宽度的纹理,然后使用glCopyTexSubImage2D刷新数据.
其他方法?我最近没有跟上GL规范中的所有变化,也许还有一些专门为此目的设计的方法?