Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用深度缓冲区而不是模具缓冲区进行剪裁_Iphone_Ios_Opengl Es - Fatal编程技术网

Iphone 使用深度缓冲区而不是模具缓冲区进行剪裁

Iphone 使用深度缓冲区而不是模具缓冲区进行剪裁,iphone,ios,opengl-es,Iphone,Ios,Opengl Es,在较旧的iOS设备上,模具缓冲区不可用。此外,剪刀只适用于简单的矩形。对于更一般的剪辑,我们可以使用深度缓冲区吗?为了使事情变得简单,让我们假设我们只在二维中绘制 另外,我的具体要求是能够旋转剪切矩形。是的,绝对可以。例如(编码为I型): 因此,主要特点是: 深度测试可以设置为始终通过 即使设置了其他缓冲区值,也可以禁用颜色打印 是的,绝对是。例如(编码为I型): 因此,主要特点是: 深度测试可以设置为始终通过 即使设置了其他缓冲区值,也可以禁用颜色打印 在执行glColorMask(GL\

在较旧的iOS设备上,模具缓冲区不可用。此外,剪刀只适用于简单的矩形。对于更一般的剪辑,我们可以使用深度缓冲区吗?为了使事情变得简单,让我们假设我们只在二维中绘制

另外,我的具体要求是能够旋转剪切矩形。

是的,绝对可以。例如(编码为I型):

因此,主要特点是:

  • 深度测试可以设置为始终通过
  • 即使设置了其他缓冲区值,也可以禁用颜色打印
  • 是的,绝对是。例如(编码为I型):

    因此,主要特点是:

    • 深度测试可以设置为始终通过
    • 即使设置了其他缓冲区值,也可以禁用颜色打印

    在执行glColorMask(GL\u TRUE、GL\u TRUE、GL\u TRUE、GL\u TRUE)之后,我们不也需要执行glDepthMask(GL\u FALSE)吗?这样剪辑区域的深度缓冲区值就不会改变了?哦,是的,这很有意义。出于某种原因,我想(I)设置一个相关的剪辑区域;(ii)绘制物体;(iii)重复。这是一个愚蠢的超专业化想象。我会修正我的答案。@Tommy任意四边剪裁的音量怎么样。我对旋转和平移的平行六面体感兴趣?在执行GLCOLORSMASK(GL_真、GL_真、GL_真、GL_真)之后,我们不也需要执行glDepthMask(GL_假)吗?这样剪辑区域的深度缓冲区值就不会改变了?哦,是的,这很有意义。出于某种原因,我想(I)设置一个相关的剪辑区域;(ii)绘制物体;(iii)重复。这是一个愚蠢的超专业化想象。我会修正我的答案。@Tommy任意四边剪裁的音量怎么样。我对旋转和平移的平行六面体感兴趣?
    glEnable(GL_DEPTH_TEST); // to enable writing to the depth buffer
    glDepthFunc(GL_ALWAYS);  // to ensure everything you draw passes
    glDepthMask(GL_TRUE);    // to allow writes to the depth buffer
    glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
                             // so that whatever we draw isn't actually visible
    
    glClear(GL_DEPTH_BUFFER_BIT); // for a fresh start
    
    /* here: draw geometry to clip to the inside of, e.g. at z = -2 */
    
    glDepthFunc(GL_GREATER); // so that the z test will actually be applied
    glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
                             // so that pixels are painted again...
    glDepthMask(GL_FALSE);  // ... but don't change the clip area
    
    /* here: draw the geometry to clip inside the old shape at a z further than -2 */