在某些坐标后停止在OpenGL上渲染纹理

时间:2016-05-15 23:33:43

标签: c++ opengl

我怎样才能创建对纹理渲染位置的限制。有点像你只看到一半的纹理,当另一半是在窗外。我一直在谷歌搜索这个,因为任何像“边界”或“限制”或其他任何东西将引导我到其他主题。

例如,我有一个可以用键盘移动的方块,我希望它不会渲染穿过红线的方块的任何部分:

enter image description here

我怎么能这样做呢?

2 个答案:

答案 0 :(得分:2)

这通常通过以下方式实现:

  • 剪刀测试(矩形区域)
  • 模板测试(适用于自由形式区域)
  • 剪裁平面(用于3D平面)
  • 着色器中的自定义代码(适用于现代OpenGL和完全控制)

答案 1 :(得分:0)

查看@Krom Stern的全面答案。我只想详细说明剪刀测试,因为看起来这就是你想要的。为了将图形输出限制为矩形区域,剪刀测试易于使用:

首先,启用剪刀测试:

glEnable(GL_SCISSOR_TEST);

然后,指定受限区域(坐标以像素为单位):

void glScissor​(GLint x​, GLint y​, GLsizei width​, GLsizei height​);

更详细的信息可以在OpenGL Wiki

中找到