Articles of opengl

如何在一个平局中处理大量的纹理?

我目前正在开发文字渲染和基于纹理混合的简单风景的纹理。 例如类似的东西,但在3D中。 在第一个实现中,我已经使用2D纹理数组来实现纹理切换的问题,以便能够在一个opengl绘制调用中绘制整个景观网格,并且效果很好,但是这应该在opengl es 2.0设备上运行,并且它们没有2纹理arrays支持。 所以我的问题是 – 我能做些什么来处理这样的问题呢? 当然,我可以分别绘制每个景观四元组,但是我非常确定,这个解决scheme真的会真正的performance真正的心脏。 (MB我错了?) 我也知道纹理图集,但是我可以保证我可以把所有可能的纹理分块着色器为每个可能的瓷砖组合?(地形瓷砖风景和每个可能的文字字符大小不同,我想你明白了)我几乎当然,我不能,这就是为什么我在这里问这个问题。 对不起,我可怕的英语,我正在努力。

了解VAO并向VAO添加不同的arrays

我真的很困惑你做什么。 我可以做他们,但是我有这个问题。 假设你有几个方块,比如说1000个方块。 现在我可以为每个1000平方做一个VAO,然后做一些循环来渲染所有的方块。 我也可以使用着色器来移动正方形。 然而,是否有可能把所有1,000个方格放在一个VAO中。 问题是我要创建一个体素游戏。 所以我需要渲染约10000个立方体。 然而,即使我现在正在做200个格子,游戏也会滞后很多。 float points[] = { 0.0f, 0.0f, 0.0f, 0.3f, 0.0f, 0.0f, 0.3f, 0.3f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.3f, 0.0f, 0.3f, 0.3f, 0.0f }; float colours[] = { 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f }; […]

Pyglet:如何使用第二个屏幕的vsync

有没有人知道是否有可能使用第二台显示器的vsync,而不是pyglet的第一台显示器? 我有2个监视器,一个以60Hz运行,另一个以120Hz运行。 我希望能够在任何监视器上设置我的应用程序,并让应用程序使用监视器的速率交换缓冲区。 这需要跨平台。 我发现这个信息… pyglet.window 但是我想知道有没有人知道方法 谢谢你的帮助。

如何使用个性化的投影matrix来渲染模型?

我正在创造一个有很高的精灵需求的游戏。 Out团队正在考虑使用3D模型自动化精灵世代。 问题是我们有一个非常特别的主题图预测: 我们已经建立了一个很好的投影matrix。 问题是现在的3D渲染器没有一个使用自定义matrix的选项。 这种问题是如何处理的?

用OpenGL绘制3Dfunction

我需要构建一些可以采用多variables函数的引擎 f(x,y) = cos(x) + y 并在3D空间中生成graphics。 有推荐的方法吗?

几何着色器和三角形邻接

我目前正在尝试改变我的项目使用GL_TRIANGLE_ADJACENCY而不是GL_TRIANGLES。 在这个问题之后,我设法建立了我的索引缓冲区,但是在绘图阶段,我得到了意想不到的结果。 这是我的几何着色器代码。 记住,我存储我的索引是这样的: ( vertex1/adjacent1/vertex2/adjacent2/vertex3/adjacent3 ) 几何着色器 #version 330 precision highp float; layout (triangles_adjacency) in; layout (triangle_strip, max_vertices = 3) out; smooth in vec2 vVaryingTexCoords[]; smooth in vec3 vVaryingNormals[]; smooth out vec2 gsUV; smooth out vec3 gsNormals; void main(void) { int i; for(i = 0; i < gl_in.length(); i++) { switch(i) { case 0: […]

从深度纹理读取总是返回1

我创建一个压缩的深度/模具纹理,并将其附加到像这样的帧缓冲: glGenTextures(1,&_depthStencilTexture); glBindTexture(GL_TEXTURE_2D,_depthStencilTexture); //set filtering to gl_nearest, not shown cause not important glTexImage2D(GL_TEXTURE_2D,0,GL_DEPTH24_STENCIL8,width,height,0,GL_DEPTH_STENCIL,GL_UNSIGNED_INT_24_8,nullptr); //… create framebuffer and attach some color attachments glFramebufferTexture(GL_FRAMEBUFFER,GL_DEPTH_STENCIL_ATTACHMENT,_depthStencilTexture,0); framebuffer的创建不会导致OpenGL状态错误。 就深度和模板testing的用法而言,纹理/附件似乎正常工作。 如果我禁用深度testing,那么如果按照错误的顺序绘制,我会在后面的对象上绘制通常的人造物品。 如果我禁用模板testing,我使用的相关效果不再工作(我正在掩盖不应该被照明通道点亮的区域)。 此外,如果我只是不把深度/模板缓冲区附加到帧缓冲区,相关的testing停止工作(如预期)。 但是,如果从着色器中读取纹理,则读取深度部分时返回1,如果从模板部分读取,则返回0。 我通过glReadBuffer(GL_DEPTH_STENCIL_ATTACHMENT)和glReadPixels证实了这一点。 所有整数读取显示为0xffffff00,直接清除glClear和黑色清除颜色后,并在屏幕上充满东西后。 从附加纹理的其余部分(现在使用四种颜色的缓冲区)绘制和读取效果很好。 我必须注意到,在渲染时,实际上我并没有手动绘制任何东西到深度模板附件中 – 我假设OpenGL自动将深度和模板值绘制到正确的缓冲区。 从纹理中读取这些不正确值的原因是什么?

无限的地形阴影

我正在创造一个无限的地形引擎,它会产生分形或噪音的地形。 如果事先不知道在太阳前会呈现什么,我怎么能在这个地形上为太阳制造dynamic的阴影。 我的地形:太阳是唯一的光,它是定向的,我的地形是在一个位于相机之前的飞机上产生的,平截头体被剔除并且适合于观看平截头体的大小。 它是用生成的噪声纹理进行高度映射的,并在其上使用曲面细分着色器。 video: http : //www.youtube.com/watch?v = tk6yFwYusOsdynamic阴影与无限的地形。

我应该使用多less个维也纳组织成员,并保存一份他们的数据?

首先,如果我的问题是广泛的,我很抱歉。 我正在开发一个基于瓦片的游戏,并从这些gl.Begin调用切换到使用VBOs。 这是一种准备工作,我设法呈现一个简单的着色器应用六角形多边形。 我不确定的是,如何实施“整体”瓦概念。 具体的问题是: 为单个瓦片创建1个VBO并在每个不同的位置渲染n次,或者渲染一个代表整个“世界”的巨大VBO, 根据上面的答案,绘制“线网格”的最佳方法是什么? 使用尊重polygon.mode相同的vbo覆盖,或者有一种方法让着色器到这个? 那么如何进行截锥体筛选或鼠标挑选呢?我需要将VBO数据保存在内存中吗?

在java2d opengl游戏中随机排除图像

在使用一些PNG图像的图标/纹理的java游戏上工作。 一些图像(less于5,几十)显示一些奇怪的平行“神器”线。 他们随形象移动,肯定不在PNG本身。 我无法弄清楚是什么原因造成的。 使用slick2d,lwjgl。 我已经试过了夹紧纹理的slcik2d和opengl方法,但是没有帮助。 这条黑线显示了图标的右侧(可能是实际图像宽度的50%)。 它不应该在那里。