我已经渲染了纹理,并且我在其上映射了四边形/矩形。 (四边形可能小于或等于总纹理尺寸)
Quad映射后,我想删除其余部分(在quad外部绘制的内容)。
到目前为止,我可以映射四边形并获取我的子纹理(不要删除)但是我无法删除剩余的区域(四边形外)。
以下图片显示了该程序;
1.Original Image
2.红色四边形的原始图像
3.删除除四边形以外的所有内容。裁剪后的纹理
答案 0 :(得分:0)
我不知道你在代码中如何计算纹理坐标但是没有数百万种方法可以做到这一点,所以我将为我想到的三种最简单的方法提供解决方案:
discard
取消像素的绘制。条件是耗时的,所以我只建议这个解决方案是你希望将裁剪的像素设置为黑色。如果您希望根本不显示它们,则解决方案1是最快的。答案 1 :(得分:-1)
我已经使用Nehe' Lesson 3解决了这个问题。我用了
glColor3f(0.0f,0.0f,0.0f); // Set The Color To Black
glBegin(GL_QUADS); // Start Drawing Quads
glVertex3f(-1.0f, 1.0f, 0.0f); // Left And Up 1 Unit (Top Left)
glVertex3f( 1.0f, 1.0f, 0.0f); // Right And Up 1 Unit (Top Right)
glVertex3f( 1.0f,-1.0f, 0.0f); // Right And Down One Unit(Bottom Right)
glVertex3f(-1.0f,-1.0f, 0.0f); // Left And Down One Unit (Bottom Left)
glEnd(); // Done Drawing A Quad`
绘制4个黑色四边形,以裁剪所选区域之外的区域。
感谢Nehe。