0

我有一些项目,其中包括来自 Glut 命名空间的许多 3d 对象,例如

Glut.glutSolidCone(0.75, 30, 4, 20);

我无论如何都找不到在这些对象上应用纹理,只有 2d 纹理适用于 2d 对象。

我试过这段代码,虽然我认为它是错误的,但它没有用,

Gl.glPushMatrix();
        Gl.glEnable(Gl.GL_TEXTURE_2D);
        Try.Terrain.LoadGLTextures("Textures/Sitework.Paving - Surfacing.Riverstone.jpg");
        Gl.glTexCoord2d(0, 0);
        Gl.glTexCoord2d(0, 1);
        Gl.glTexCoord2d(1, 1);
        Gl.glTexCoord2d(1, 1);
        Gl.glRotated(90, 1, 0, 0);
        Glut.glutSolidCone(5, 10, 30, 30);
        Gl.glDisable(Gl.GL_TEXTURE_2D);
        Gl.glPopMatrix();

结果是这个 3d 对象出现时应用了纹理的基本颜色。

4

2 回答 2

1

glutSolidCone()不包含纹理坐标。

您必须自己生成它们

于 2012-05-22T21:13:20.183 回答
0

旧函数gluCylinder()支持纹理。

gluCylinder() 有两个半径参数:base 和 top,所以简单地设置 top=0 会生成一个圆锥而不是圆柱。

GLUquadricObj* quadobj = gluNewQuadric();
gluQuadricTexture(quadobj, GL_TRUE);
glBindTexture(GL_TEXTURE_2D, *your_texture );
gluCylinder(quadobj, 2.0, 0, 3.0, 10, 10);

我不确定 C# 中是否有 gluCylinder() 。

于 2014-10-30T20:12:30.727 回答