glclear()修改ios8 opengl中glscissor()边界之外的图像

时间:2015-03-15 00:58:41

标签: ios opengl-es

以下代码仅绘制一个绿色框,当我期待绿色和红色框时。

如果我没有第二个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);

1 个答案:

答案 0 :(得分:1)

所以我设法自己解决了这个问题。我不得不在抽奖结束时“重置”剪刀盒。即:

glScissor(0,0,viewPixelWidth, viewPixelHeight);

发生的事情是,当渲染渲染缓冲器时,剪刀盒再次被应用,因此最新剪刀盒外的所有东西都没有被复制。