depth-buffer

    1热度

    1回答

    我正在绘制一个相当简单的仅包含矩形的2D场景。我有一个FloatBuffer,其中为每个顶点放置了X,Y,Z,R,G,B,A,U和V数据。 我使用glDrawArrays和GL_TRIANGLE_STRIP绘制,保持矩形与退化顶点分离。 为了便于使用多个纹理,我为每个纹理的绘制调用保留单独的浮点数组。纹理绑定,float数组放入FloatBuffer中,然后绘制。 然后绑定下一个纹理,并继续,直到

    1热度

    1回答

    我一直在阅读关于从深度缓冲区重构世界空间中片段的位置,但我正在考虑将位置存储在高精度三通道位置缓冲区中。这样做会比从深度缓冲区解压缩位置更快吗?从深度重建位置的成本是多少?

    1热度

    2回答

    我正在为OpenGL ES 2.0,iOS开发一个简单的3D应用程序。 我想要做的是我想在片段着色器的深度缓冲区中获取场景的深度值。 所以,我创建深度缓冲器作为2D纹理 GLuint texture; glGenTextures(1, &texture); glBindTexture(GL_TEXTURE_2D, texture); glTexImage2D(GL_TEXTURE_2D, 0

    5热度

    1回答

    我想以一种非正统的方式使用深度缓冲区,我对所有规范化,缩放以及在那里发生的事情感到困惑。 我的计划是实施来自AMD的一些家伙(link to pdf)的空间哈希算法。 dr-version:通过将3D顶点离散化为(平面2D)深度纹理数组,将深度设置为VertexID,从而加快最近邻居搜索的速度。使用深度纹理的原因是,有一些智能深度测试甚至可以按照排序顺序得到结果,但这不重要。 我的问题是,Vert

    4热度

    1回答

    作为DirectX noob,我试图围绕深度缓冲区包裹头部,特别是像素着色器如何被调用以遮蔽像素。 据我所知,光栅化器为覆盖绘制原始图像的每个像素调用像素着色器,然后在输出合并阶段,输出合并器检查深度缓冲区并丢弃,写入或混合像素在后台缓冲区中。 这似乎很浪费,虽然如果我在一个非常复杂的前面渲染一个简单的不透明对象,所以看起来有必要让光栅化器检查深度图在甚至调用复杂对象的像素着色器之前。 做研究我发

    2热度

    1回答

    下面是来自同一视点(虚拟相机)的同一3D场景的2张图像,有无背视。图像不描绘最终的网格,而是描绘深度缓冲区的内容。 没有BackCulling glDisable(GL_CULL_FACE); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); glDepthFu

    4热度

    1回答

    我试图实现延期着色/照明。为了减少我使用的缓冲区的数量/大小,我希望以后使用深度纹理重建世界位置。 我通过将像素坐标与投影矩阵的逆矩阵和相机矩阵的逆矩阵相乘来完成此操作。这类作品,但是位置有点偏离。下面是用采样世界位置的纹理的绝对差: 作为参考,这是我在第二遍片段着色器使用的代码: vec2 screenPosition_texture = vec2((gl_FragCoord.x)/WIDTH,

    0热度

    1回答

    我正尝试渲染帧缓冲区中的所有内容。 所以我做了深度纹理和颜色纹理附着帧缓冲区如下所示:http://www.opengl.org/wiki/Framebuffer_Object_Examples#Color_texture.2C_Depth_texture 但如果启用GL_DEPTH_TEST没有呈现。 我在做什么错? 整个代码太长... 帧缓冲类: class FrameBuffer {

    1热度

    1回答

    在我的延迟渲染器中,深度缓冲区保存的值范围从约0.9700到1.0000。我通过在给定深度范围内绘制黑色像素来发现这一点。这是我使用的着色器代码。 bool inrange(in float position) { float z = texture2D(depth, coord).r; return abs(position - z) < 0.0001; } void

    0热度

    1回答

    我正在使用个性化的摄影投影矩阵来定位我的物体,这些物体都是平坦的小精灵。问题是没有办法从它们的位置线性地推导投影的深度:相反,它是它们的拓扑排序的结果。我怎样才能从他们的位置独立设置他们的深度?