我是 openGL 的新手,我正在阅读红皮书。现在,作为练习,我想手动绘制一个球体。为此,我将球体分成切片和堆叠,因此我得到多个矩形,但在球体的两极附近我得到三角形。(希望这很清楚我在做什么)。现在我知道,如果您使用 GL_POLYGON 绘制一个多边形并且它恰好与自身相交,则行为是未定义的。我的问题是:给定不在一条线上的三个点 v1、v2、v3,这样做是否是未定义的行为:
glBegin(GL_POLYGON)
vertex v1
vertex v1
vertex v2
vertex v3
glEnd();
这可能将两个不相关的问题合二为一,但我也想知道:如果我选择将 sphere 例程中的矩形划分为三角形,那么我如何做到这一点是否重要,也就是说,我将矩形划分为哪个对角线两个三角形?我猜想绘制一个单色球体没关系,但我不知道纹理、着色器、照明等。