Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
3d 在pyopengl中绘制纹理_3d_Textures_Pyopengl - Fatal编程技术网

3d 在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

我正在尝试了解纹理渲染的基本原理,以及如何使用pyopengl进行纹理渲染,因为我已经使用了一段时间

我读过一些文档,从红皮书到教程,但我的程序不渲染任何纹理-它只是更改(变暗)绘制对象表面的颜色

下面是相关代码:该函数读取图像文件,设置纹理属性并启用它

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接口。