为什么基于3D纹理的音量渲染没有3D效果

  • 本文关键字:3D 效果 纹理 c# opentk
  • 更新时间 :
  • 英文 :


我使用Opentk实现了基于3D纹理的音量渲染。该代码基于此项目。但是结果没有显示3D效果,只有平坦的2D图像。

管道很简单:(1)加载3D纹理;(2)绘制一系列四边形(矩形)并指定相应的纹理坐标。

使用

生成每个四边形的顶点
private void generateVertices(int n)
    {
        vertices = new float[n * 3 * 4];
        int cur;
        for (int i = 0; i < n; i++)
        {
            cur = 3 * 4 * i;
            vertices[cur] = -.5f;
            vertices[cur + 1] = -.5f;
            vertices[cur + 2] = -0.5f + i / n;
            vertices[cur+3] = -.5f;
            vertices[cur + 4] = .5f;
            vertices[cur + 5] = -0.5f +  i / n;
            vertices[cur+6] = .5f;
            vertices[cur + 7] = .5f;
            vertices[cur + 8] = -0.5f +  i / n;
            vertices[cur+9] = .5f;
            vertices[cur + 10] = -.5f;
            vertices[cur + 11] = -0.5f + i / n;
        }
    }

要绘制256个四边形,只需致电GenerateVertices(256)和OpenGL例程

gldrawelements(gl_quads,...)

使用顶点着色器中的顶点位置计算出TexCoordinates:

texCoord = aPosition+vec3(0.5f,0.5f,0.5f);

欢迎任何想法。

integer i 在范围内[0,n-1], i/n 将永远为0。因此,您确实指定了n个重叠的四边形。

解决方案很简单,只是明确施放i到float (float)i/n

最新更新