一位笔记本电脑用户ATI Radeon HD 5800 Series
刚刚向我展示了我在他的机器上运行的 2D 游戏的视频,我的glScissor
代码似乎没有按预期运行(尽管它在许多其他计算机上运行)。
每当我想将渲染限制在屏幕上的某个矩形上时,我都会将我的SetClip
函数调用到特定的矩形,或者Rectangle.Empty
重置剪刀。
public void SetClip(Rectangle theRect)
{
if (theRect.IsEmpty)
OpenGL.glDisable(OpenGL.EnableCapp.ScissorTest);
else
{
if (!OpenGL.glIsEnabled(OpenGL.EnableCapp.ScissorTest))
OpenGL.glEnable(OpenGL.EnableCapp.ScissorTest);
OpenGL.glScissor(theRect.Left, myWindow.clientSizeHeight - theRect.Bottom,
theRect.Width, theRect.Height);
CheckError();
}
}
这种方法是错误的吗?例如,我有一种感觉glEnable
/glDisable
可能需要glFlush
orglFinish
来保证它按照我调用它们的顺序执行。