C++ 在特定坐标后停止在OpenGL上渲染纹理

C++ 在特定坐标后停止在OpenGL上渲染纹理,c++,opengl,C++,Opengl,我如何才能对纹理渲染的位置进行限制。有点像当另一半在窗口外时,你只能看到一半的纹理。我在谷歌上搜索这篇文章时遇到了麻烦,因为任何像“边界”或“限制”之类的东西都会把我引向其他话题 例如,我有一个可以用键盘移动的正方形,我希望它不会渲染穿过红线的正方形的任何部分: 我怎样才能做到这一点呢?这通常是通过以下方式实现的: 剪切试验(适用于矩形区域) 模板测试(适用于自由区域) 剪裁平面(用于三维平面) 着色器中的自定义代码(用于现代OpenGL和完全控制) 这通常通过以下方式实现: 剪切试验(适

我如何才能对纹理渲染的位置进行限制。有点像当另一半在窗口外时,你只能看到一半的纹理。我在谷歌上搜索这篇文章时遇到了麻烦,因为任何像“边界”或“限制”之类的东西都会把我引向其他话题

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


我怎样才能做到这一点呢?

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

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

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

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

    • 查看@Krom Stern的完整答案。我只想详细介绍一下剪刀测试,因为这似乎是你想要的。为了将图形输出限制为矩形区域,剪刀测试很容易使用:

      首先,启用剪刀测试:

      glEnable(GL_SCISSOR_TEST);
      
      然后,指定限制区域(坐标以像素为单位):


      更多详细信息可在

      查看@Krom Stern的完整答案。我只想详细介绍一下剪刀测试,因为这似乎是你想要的。为了将图形输出限制为矩形区域,剪刀测试很容易使用:

      首先,启用剪刀测试:

      glEnable(GL_SCISSOR_TEST);
      
      然后,指定限制区域(坐标以像素为单位):


      更详细的信息可以在

      中找到。您能更具体一点吗?是否只希望抑制纹理的渲染(即在示例中渲染整个白色框,但仅保持红线左侧的纹理),还是希望抑制某些边界之外的任何图形输出?后者可以通过适当地设置视口或使用剪刀测试来完成。后者,在实践中,特定纹理的图形输出不会渲染到某个点。我一直在谷歌上搜索viewport和scissor测试,它看起来很有希望,所以我将对此进行研究。谢谢你的帮助^-^你能说得更具体些吗?是否只希望抑制纹理的渲染(即在示例中渲染整个白色框,但仅保持红线左侧的纹理),还是希望抑制某些边界之外的任何图形输出?后者可以通过适当地设置视口或使用剪刀测试来完成。后者,在实践中,特定纹理的图形输出不会渲染到某个点。我一直在谷歌上搜索viewport和scissor测试,它看起来很有希望,所以我将对此进行研究。谢谢你的帮助^-^