以下代码仅绘制一个绿色框,当我期待绿色和红色框时。
如果我没有第二个glClear()语句,则会出现红色框。
这让我得出结论,因为我在红色框的边界之外有剪刀框,glClear()语句不尊重剪刀框。
任何人都可以帮我理解发生了什么吗?
glEnable(GL_SCISSOR_TEST);
int x, y, w, h;
x = 0;
y = 0;
w = 700;
h = 700;
glViewport(x,y,w,h);
glScissor(x,y,w,h);
glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
x = 0;
y = 750;
w = 700;
h = 700;
glViewport(x,y,w,h);
glScissor(x,y,w,h);
glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
答案 0 :(得分:1)
所以我设法自己解决了这个问题。我不得不在抽奖结束时“重置”剪刀盒。即:
glScissor(0,0,viewPixelWidth, viewPixelHeight);
发生的事情是,当渲染渲染缓冲器时,剪刀盒再次被应用,因此最新剪刀盒外的所有东西都没有被复制。