[英]Texture mapping a curved rectangle in OpenGL [python]
我在Python中的OpenGL纹理映射方面遇到了一些问题。 我正在尝试绘制一个在顶部和底部弯曲的矩形,但到目前为止,我只能在底部弯曲它。 不知何故,鞋帮不想形成曲线。 我使用的函数参数为0.2:
def DrawAWobble(y_wobble):
R = y_wobble/2.0 - 1/(2.0*y_wobble)
glBegin(GL_POLYGON)
x = 0.0
while x<2.1:
glTexCoord2f(x*0.5, 1.0); glVertex2f(x/2 - 0.5, 0.5 + (R + math.sqrt(R**2 - (1 - x)**2 + 1)))
x += 0.1
x = 2.0
while x>-0.1:
glTexCoord2f(x*0.5, 0.0); glVertex2f(x/2 - 0.5, -0.5 + (R + math.sqrt(R**2 - (1 - x)**2 + 1)))
x -= 0.1
glEnd()
我得到的结果是在左边,而我应该得到像图像的右边部分。
评论员蒂姆是对的。 问题是GL_POLYGON。 问题是GPU必须弄清楚如何对您的任意多边形进行三角测量,并且它的运行方式不是保留您的映射。 您可能想要的是使用单个四边形条或三角形条来渲染它; 而不是在多边形的边缘周围工作,来回交替和工作。 像这样的东西(显然未经测试):
def DrawAWobble(y_wobble,step=0.1):
R = y_wobble/2.0 - 1/(2.0*y_wobble)
glBegin(GL_QUAD_STRIP)
x = 0.0
while x<2.0+0.5*step:
glTexCoord2f(0.5*x,0.0); glVertex2f(0.5*(x-1), -0.5 + R + (R*R-(1-x)*(1-x)+1)**0.5)
glTexCoord2f(0.5*x,1.0); glVertex2f(0.5*(x-1), 0.5 + R + (R*R-(1-x)*(1-x)+1)**0.5)
x += step
glEnd()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.