3d 在pyopengl中绘制纹理
我正在尝试了解纹理渲染的基本原理,以及如何使用pyopengl进行纹理渲染,因为我已经使用了一段时间 我读过一些文档,从红皮书到教程,但我的程序不渲染任何纹理-它只是更改(变暗)绘制对象表面的颜色 下面是相关代码:该函数读取图像文件,设置纹理属性并启用它3d 在pyopengl中绘制纹理,3d,textures,pyopengl,3d,Textures,Pyopengl,我正在尝试了解纹理渲染的基本原理,以及如何使用pyopengl进行纹理渲染,因为我已经使用了一段时间 我读过一些文档,从红皮书到教程,但我的程序不渲染任何纹理-它只是更改(变暗)绘制对象表面的颜色 下面是相关代码:该函数读取图像文件,设置纹理属性并启用它 def generateTexture(texPath): im=图像。打开(texPath) texData=im.tostring('raw','RGBX',0,-1) texName=[0] glGenTextures(1,texName
def generateTexture(texPath):
im=图像。打开(texPath)
texData=im.tostring('raw','RGBX',0,-1)
texName=[0]
glGenTextures(1,texName)
glBindTexture(GL_TEXTURE_2D,texName[0])
glPixelStorei(GLU解包对齐,1)
glTexParameteri(GL_纹理_2D、GL_纹理_包裹、GL_夹紧)
glTexParameteri(GL_纹理\u 2D、GL_纹理\u包裹、GL_夹具)
glTexParameteri(GL_纹理_2D,GL_纹理_贴图过滤器,GL_最近)
glTexParameteri(GL\u纹理\u 2D,GL\u纹理\u最小\u过滤器,GL\u最近)
glTexImage2D(GL_纹理_2D,0,GL_RGBA,256,256,0,GL_RGBA,GL_无符号字节,texData)
glEnable(GL_纹理_2D)
返回texName
以及创建对象顶点可视化列表的函数
def显示顶点(obj):
顶点列表=glGenLists(1)
glNewList(顶点列表,GL编译)
texNames=generateTexture('tex_stone.jpg')
glBindTexture(GL_TEXTURE_2D,texNames[0])
glColor3f(1.0,1.0,1.0)
glBegin(GLU点)
i=0
而我
我不认为这是问题所在,但我正在手动计算每个对象的纹理坐标(计算“sorrounding sphere”与从对象中心到每个顶点的向量的交点)
如果您想查看代码的任何其他部分,请询问。任何提示或建议都将不胜感激
编辑:可能问题在于我将
glTexCoord2f()
与glBegin(GL_点)
结合使用,为了将纹理应用于曲面,应该与GL_四边形
、GL_三角形
或任何其他曲面一起使用?问题是,我的对象的边不是由确定的多边形类型组成的:主要是三角形,但也有四边形。就是这样。我将对glTexCoord2f()
的调用移动到计算对象侧面的函数:
def显示面(obj):
侧面列表=glGenLists(1)
glNewList(侧面列表、总图编译)
texNames=generateTexture('tex_pattern.jpg')
glColor3f(1.0,1.0,0.0)
i=0
而我
另外,在调用
showSides()
之前,我将glEnable(GL\u TEXTURE\u 2D)
替换为主可视化函数。我将对glTexCoord2f()
的调用移到了它计算对象侧面的函数:很抱歉重复响应。我还不太熟悉stackoverflow接口。