小编toi*_*toi的帖子

GLSL/OpenGL着色器曲面细分闪烁和失败

我刚刚开始使用OpenGL细分,并且遇到了一些麻烦.我正在细分由一个顶点形成的一系列补丁.这些顶点/补丁以网格状结构构造,以后形成由Perlin Noise生成的地形.

我遇到的问题是从第二补丁开始,之后的每 5 补丁,有时会有很多细分(不是我配置的方式),但大多数情况下它根本没有得到细分.

像这样:

  

两个白色圆圈标记高度/过度细分的贴片.还要注意未分区补丁的模式.

奇怪的是,它适用于我的Surface Pro 2(英特尔HD4400显卡),但我的主台式电脑(AMD HD6950显卡)上有错误.硬件有可能坏吗?

使用以下代码生成修补程序:

    vec4* patches = new vec4[m_patchesWidth * m_patchesDepth];
    int c = 0;
    for (unsigned int z = 0; z < m_patchesDepth; ++z) {
        for (unsigned int x = 0; x < m_patchesWidth; ++x) {
            patches[c] = vec4(x * 1.5f, 0, z * 1.5f, 1.0f);
            c++;
        }
    }
    m_fxTerrain->Apply();
    glGenBuffers(1, &m_planePatches);
    glBindBuffer(GL_ARRAY_BUFFER, m_planePatches);
    glBufferData(GL_ARRAY_BUFFER, m_patchesWidth * m_patchesDepth * sizeof(vec4), patches, GL_STATIC_DRAW);
    GLuint loc = m_fxTerrain->GetAttrib("posIn"); …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glsl tessellation

14
推荐指数
1
解决办法
2400
查看次数

标签 统计

c++ ×1

glsl ×1

opengl ×1

tessellation ×1