1

嗨,我正在尝试加载纹理(.bmp 图像)...

通过调试,我看到它已被加载......但屏幕上什么也没有出现!这是我的代码:

int front_ID = Terrain.LoadGLTextures(@"C:\Users\Ruba\Desktop\our project graphic2\our project graphic\images\top.bmp");
        int back_ID = Terrain.LoadGLTextures(@"C:\Users\Ruba\Desktop\our project graphic2\our project graphic\images\top.bmp");
        int right_ID = Terrain.LoadGLTextures(@"C:\Users\Ruba\Desktop\our project graphic2\our project graphic\images\top.bmp");
        int left_ID = Terrain.LoadGLTextures(@"C:\Users\Ruba\Desktop\our project graphic2\our project graphic\images\top.bmp");
        int top_ID = Terrain.LoadGLTextures(@"C:\Users\Ruba\Desktop\our project graphic2\our project graphic\images\top.bmp");
        int down_ID = Terrain.LoadGLTextures(@"C:\Users\Ruba\Desktop\our project graphic2\our project graphic\images\top.bmp");

        Terrain.draw_skybox(520, front_ID, back_ID, right_ID, left_ID, top_ID, down_ID);

和方法(draw_skybox):

public static void draw_skybox(float size, int front, int back, int right, int left, int up, int bottom)
    {
        float scale = 1; // important 

        Gl.glPushMatrix();

        Gl.glScalef(size, size, size);


        //Front Face
        //Gl.glEnable(Gl.GL_CULL_FACE);
        Gl.glCullFace(Gl.GL_BACK);
        Gl.glBindTexture(Gl.GL_TEXTURE_2D, front);

        Gl.glBegin(Gl.GL_QUADS);
        Gl.glNormal3f(0, 0, 1);
        Gl.glTexCoord2d(0, 0); Gl.glVertex3f(-0.5f, -0.5f, -0.5f);
        Gl.glTexCoord2d(1, 0); Gl.glVertex3f(0.5f, -0.5f, -0.5f);
        Gl.glTexCoord2d(1, 1); Gl.glVertex3f(0.5f, 0.5f, -0.5f);
        Gl.glTexCoord2d(0, 1); Gl.glVertex3f(-0.5f, 0.5f, -0.5f);
        Gl.glEnd();
        //Gl.glCullFace(Gl.GL_BACK);
        // Gl.glDisable(Gl.GL_CULL_FACE);
        //Back Face
        Gl.glBindTexture(Gl.GL_TEXTURE_2D, back);
        Gl.glBegin(Gl.GL_QUADS);
        Gl.glNormal3f(0, 0, -1);
        Gl.glTexCoord2d(1, 0); Gl.glVertex3f(-0.5f, -0.5f, 0.5f);
        Gl.glTexCoord2d(0, 0); Gl.glVertex3f(0.5f, -0.5f, 0.5f);
        Gl.glTexCoord2d(0, 1); Gl.glVertex3f(0.5f, 0.5f, 0.5f);
        Gl.glTexCoord2d(1, 1); Gl.glVertex3f(-0.5f, 0.5f, 0.5f);
        Gl.glEnd();

        //right face
        Gl.glBindTexture(Gl.GL_TEXTURE_2D, right);
        Gl.glBegin(Gl.GL_QUADS);
        Gl.glNormal3f(1, 0, 0);
        Gl.glTexCoord2d(0, 0); Gl.glVertex3f(0.5f, -0.5f, -0.5f);
        Gl.glTexCoord2d(0, 1); Gl.glVertex3f(0.5f, 0.5f, -0.5f);
        Gl.glTexCoord2d(1, 1); Gl.glVertex3f(0.5f, 0.5f, 0.5f);
        Gl.glTexCoord2d(1, 0); Gl.glVertex3f(0.5f, -0.5f, 0.5f);
        Gl.glEnd();

        //Left Face
        Gl.glBindTexture(Gl.GL_TEXTURE_2D, left);
        Gl.glBegin(Gl.GL_QUADS);
        Gl.glNormal3f(-1, 0, 0);
        Gl.glTexCoord2d(1, 0); Gl.glVertex3f(-0.5f, -0.5f, -0.5f);
        Gl.glTexCoord2d(1, 1); Gl.glVertex3f(-0.5f, 0.5f, -0.5f);
        Gl.glTexCoord2d(0, 1); Gl.glVertex3f(-0.5f, 0.5f, 0.5f);
        Gl.glTexCoord2d(0, 0); Gl.glVertex3f(-0.5f, -0.5f, 0.5f);
        Gl.glEnd();

        //Top Face
        Gl.glBindTexture(Gl.GL_TEXTURE_2D, up);

        Gl.glBegin(Gl.GL_QUADS);
        Gl.glNormal3f(0, 1, 0);
        Gl.glTexCoord2d(0, 0); Gl.glVertex3f(-0.5f, 0.5f, -0.5f);
        Gl.glTexCoord2d(1, 0); Gl.glVertex3f(0.5f, 0.5f, -0.5f);
        Gl.glTexCoord2d(1, 1); Gl.glVertex3f(0.5f, 0.5f, 0.5f);
        Gl.glTexCoord2d(0, 1); Gl.glVertex3f(-0.5f, 0.5f, 0.5f);
        Gl.glEnd();


        //Bottom Face

        Gl.glBindTexture(Gl.GL_TEXTURE_2D, bottom);
        Gl.glBegin(Gl.GL_QUADS);
        Gl.glNormal3f(0, -1, 0);
        Gl.glTexCoord2d(0, 0); Gl.glVertex3f(-0.5f, -0.5f, -0.5f);
        Gl.glTexCoord2d(1, 0); Gl.glVertex3f(0.5f, -0.5f, -0.5f);
        Gl.glTexCoord2d(1, 1); Gl.glVertex3f(0.5f, -0.5f, 0.5f);
        Gl.glTexCoord2d(0, 1); Gl.glVertex3f(-0.5f, -0.5f, 0.5f);
        Gl.glEnd();

        Gl.glPopMatrix();


    }


public static void draw_skybox(float size, int front, int back, int right, int left, int up, int bottom)
    {
        float scale = 1; // important 

        Gl.glPushMatrix();

        Gl.glScalef(size, size, size);


        //Front Face
        //Gl.glEnable(Gl.GL_CULL_FACE);
        //Gl.glCullFace(Gl.GL_BACK);
        Gl.glBindTexture(Gl.GL_TEXTURE_2D, front);

        Gl.glBegin(Gl.GL_QUADS);
        Gl.glNormal3f(0, 0, 1);
        Gl.glTexCoord2d(0, 0); Gl.glVertex3f(-0.5f, -0.5f, -0.5f);
        Gl.glTexCoord2d(1, 0); Gl.glVertex3f(0.5f, -0.5f, -0.5f);
        Gl.glTexCoord2d(1, 1); Gl.glVertex3f(0.5f, 0.5f, -0.5f);
        Gl.glTexCoord2d(0, 1); Gl.glVertex3f(-0.5f, 0.5f, -0.5f);
        Gl.glEnd();
        //Gl.glCullFace(Gl.GL_BACK);
        // Gl.glDisable(Gl.GL_CULL_FACE);
        //Back Face
        Gl.glBindTexture(Gl.GL_TEXTURE_2D, back);
        Gl.glBegin(Gl.GL_QUADS);
        Gl.glNormal3f(0, 0, -1);
        Gl.glTexCoord2d(1, 0); Gl.glVertex3f(-0.5f, -0.5f, 0.5f);
        Gl.glTexCoord2d(0, 0); Gl.glVertex3f(0.5f, -0.5f, 0.5f);
        Gl.glTexCoord2d(0, 1); Gl.glVertex3f(0.5f, 0.5f, 0.5f);
        Gl.glTexCoord2d(1, 1); Gl.glVertex3f(-0.5f, 0.5f, 0.5f);
        Gl.glEnd();

        //right face
        Gl.glBindTexture(Gl.GL_TEXTURE_2D, right);
        Gl.glBegin(Gl.GL_QUADS);
        Gl.glNormal3f(1, 0, 0);
        Gl.glTexCoord2d(0, 0); Gl.glVertex3f(0.5f, -0.5f, -0.5f);
        Gl.glTexCoord2d(0, 1); Gl.glVertex3f(0.5f, 0.5f, -0.5f);
        Gl.glTexCoord2d(1, 1); Gl.glVertex3f(0.5f, 0.5f, 0.5f);
        Gl.glTexCoord2d(1, 0); Gl.glVertex3f(0.5f, -0.5f, 0.5f);
        Gl.glEnd();

        //Left Face
        Gl.glBindTexture(Gl.GL_TEXTURE_2D, left);
        Gl.glBegin(Gl.GL_QUADS);
        Gl.glNormal3f(-1, 0, 0);
        Gl.glTexCoord2d(1, 0); Gl.glVertex3f(-0.5f, -0.5f, -0.5f);
        Gl.glTexCoord2d(1, 1); Gl.glVertex3f(-0.5f, 0.5f, -0.5f);
        Gl.glTexCoord2d(0, 1); Gl.glVertex3f(-0.5f, 0.5f, 0.5f);
        Gl.glTexCoord2d(0, 0); Gl.glVertex3f(-0.5f, -0.5f, 0.5f);
        Gl.glEnd();

        //Top Face
        Gl.glBindTexture(Gl.GL_TEXTURE_2D, up);

        Gl.glBegin(Gl.GL_QUADS);
        Gl.glNormal3f(0, 1, 0);
        Gl.glTexCoord2d(0, 0); Gl.glVertex3f(-0.5f, 0.5f, -0.5f);
        Gl.glTexCoord2d(1, 0); Gl.glVertex3f(0.5f, 0.5f, -0.5f);
        Gl.glTexCoord2d(1, 1); Gl.glVertex3f(0.5f, 0.5f, 0.5f);
        Gl.glTexCoord2d(0, 1); Gl.glVertex3f(-0.5f, 0.5f, 0.5f);
        Gl.glEnd();


        //Bottom Face

        Gl.glBindTexture(Gl.GL_TEXTURE_2D, bottom);
        Gl.glBegin(Gl.GL_QUADS);
        Gl.glNormal3f(0, -1, 0);
        Gl.glTexCoord2d(0, 0); Gl.glVertex3f(-0.5f, -0.5f, -0.5f);
        Gl.glTexCoord2d(1, 0); Gl.glVertex3f(0.5f, -0.5f, -0.5f);
        Gl.glTexCoord2d(1, 1); Gl.glVertex3f(0.5f, -0.5f, 0.5f);
        Gl.glTexCoord2d(0, 1); Gl.glVertex3f(-0.5f, -0.5f, 0.5f);
        Gl.glEnd();

        Gl.glPopMatrix();


    }

请帮我

4

1 回答 1

2

你应该检查几件事。

纹理是否启用?

Gl.glEnable(Gl.GL_TEXTURE_2D);

你在里面Gl.glGenTextures(...)打电话吗?Gl.glTexImage2D(...)Terrain.LoadGLTextures(...);

背面、右侧和底部四边形的缠绕顺序错误。绕组必须逆时针。由于您启用了剔除,因此从立方体体积内部看不到这些四边形。只需交换第一个和第二个顶点,以及第三个和第四个。

确保您从卷内查看场景。

你真的要使用 Tao 框架吗?Tao 框架自 2008 年 5 月以来没有更新,并且自 2010 年 7 月以来已经失效。也许你应该看看 OpenTK 框架:http ://www.opentk.com/

于 2011-01-02T21:11:35.087 回答