好吧,我可能是唯一一个试图用 GL_OBJECT_LINEAR 模拟 GL_EYE_LINEAR 的人,但我终于找到了一种方法。
首先,目的是使用位图纹理粘贴在模型上,因此您必须在需要粘贴纹理/位图的位置保存当前的旋转 (rx,ry,rz) 和平移 (tx,ty,tz), SAVE_POSITION= (rx_save,ry_save,rz_save,tx_save,ty_save,tz_save)。
然后,您只需执行以下步骤:
0- gl.glMatrixMode(gl.GL_MODELVIEW), gl.glLoadIdentity()
1-然后用这个严格的顺序修改模型视图矩阵:旋转(CURRENT_POSITION) b. 翻译(CURRENT_POSITION) c. 翻译(-SAVE_POSITION)旋转(-SAVE_POSITION)
2-设置纹理生成(放置位图纹理):
gl.glTexGendv(gl.GL_S,gl.GL_EYE_PLANE,(self.TexSize,0,0,0))
gl.glTexGendv(gl.GL_T,gl.GL_EYE_PLANE,(0,self.TexSize,0,0))
gl.glTexGeni(gl.GL_S,gl.GL_TEXTURE_GEN_MODE,gl.GL_EYE_LINEAR)
gl.glTexGeni(gl.GL_T,gl.GL_TEXTURE_GEN_MODE,gl.GL_EYE_LINEAR)
gl.glEnable(gl.GL_TEXTURE_GEN_S)
gl.glEnable(gl.GL_TEXTURE_GEN_T)
3- 重新加载 MODELVIEW gl.glLoadIdentity()(或使用 push/pop) 4- 像往常一样旋转/平移到 CURRENT_POSITION 5- 绘制模型
希望它可以帮助某人。
但正如 Jason 所说,最好的方法是使用着色器而不是传统的 opengl ......我在这里为 python 程序员找到了一些很好的教程:http:
//pyopengl.sourceforge.net/context/
问候,-baco