Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
C# opengltao框架中的多纹理_C#_Opengl_Tao Framework - Fatal编程技术网

C# opengltao框架中的多纹理

C# opengltao框架中的多纹理,c#,opengl,tao-framework,C#,Opengl,Tao Framework,我在OpenGL,Tao框架中工作。我已经完成了所有的编程,但我不能插入多个纹理。这是我的密码。要将另一个图像插入阵列,我应该插入什么?这就是我称之为3纹理的方式,但第3纹理和其他纹理都是owerwriten纹理 好的,我就是这样做的,现在它工作了。谢谢你的帮助。我能给你打分吗?glBindTexture()的想法给了我一个想法,就是glGenTextures,它保存了纹理的实例 private void initGL() { Gl.glClearDepth(1.0);

我在OpenGL,Tao框架中工作。我已经完成了所有的编程,但我不能插入多个纹理。这是我的密码。要将另一个图像插入阵列,我应该插入什么?这就是我称之为3纹理的方式,但第3纹理和其他纹理都是owerwriten纹理


好的,我就是这样做的,现在它工作了。谢谢你的帮助。我能给你打分吗?glBindTexture()的想法给了我一个想法,就是glGenTextures,它保存了纹理的实例

private void initGL()
    {

        Gl.glClearDepth(1.0);
        Gl.glClearColor(0.0f, 0.2f, 0.3f, 0.0f);
        Gl.glEnable(Gl.GL_DEPTH_TEST);  // Hidden surface removal
        Gl.glFrontFace(Gl.GL_CW);           // clock-wise polygons face out
        Gl.glEnable(Gl.GL_COLOR_MATERIAL);
        Gl.glShadeModel(Gl.GL_SMOOTH);
        Gl.glEnable(Gl.GL_LIGHTING);
        Gl.glEnable(Gl.GL_LIGHT0);

        Gl.glDepthFunc(Gl.GL_LEQUAL);                               // type of depth testing
        Gl.glHint(Gl.GL_PERSPECTIVE_CORRECTION_HINT, Gl.GL_NICEST); // nice perspective calculations

        Gl.glEnable(Gl.GL_TEXTURE_2D);

        texture = new uint[6];

        Bitmap image = new Bitmap("1.jpg");
        image.RotateFlip(RotateFlipType.RotateNoneFlipY);
        System.Drawing.Imaging.BitmapData bitmapdata;
        Rectangle rect = new Rectangle(0, 0, image.Width, image.Height);

        bitmapdata = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly,
            System.Drawing.Imaging.PixelFormat.Format24bppRgb);

            // storage for texture for one picture

        Gl.glGenTextures(5, texture);
        Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[5]);
        Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, (int)Gl.GL_RGB8, image.Width, image.Height,
            0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);       // Linear Filtering
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);       // Linear Filtering

         image = new Bitmap("2.jpg");
        image.RotateFlip(RotateFlipType.RotateNoneFlipY);

         rect = new Rectangle(0, 0, image.Width, image.Height);

        bitmapdata = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly,
            System.Drawing.Imaging.PixelFormat.Format24bppRgb);

        // storage for texture for one picture

        Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[4]);
        Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, (int)Gl.GL_RGB8, image.Width, image.Height,
            0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);       // Linear Filtering
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

        image = new Bitmap("3.jpg");
        image.RotateFlip(RotateFlipType.RotateNoneFlipY);

        rect = new Rectangle(0, 0, image.Width, image.Height);

        bitmapdata = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly,
            System.Drawing.Imaging.PixelFormat.Format24bppRgb);

        // storage for texture for one picture

        Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[3]);
        Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, (int)Gl.GL_RGB8, image.Width, image.Height,
            0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);       // Linear Filtering
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

        image = new Bitmap("4.jpg");
        image.RotateFlip(RotateFlipType.RotateNoneFlipY);

        rect = new Rectangle(0, 0, image.Width, image.Height);

        bitmapdata = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly,
            System.Drawing.Imaging.PixelFormat.Format24bppRgb);

        // storage for texture for one picture

        Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[2]);
        Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, (int)Gl.GL_RGB8, image.Width, image.Height,
            0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);       // Linear Filtering
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

        image = new Bitmap("5.jpg");
        image.RotateFlip(RotateFlipType.RotateNoneFlipY);

        rect = new Rectangle(0, 0, image.Width, image.Height);

        bitmapdata = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly,
            System.Drawing.Imaging.PixelFormat.Format24bppRgb);

        // storage for texture for one picture

        Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[1]);
        Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, (int)Gl.GL_RGB8, image.Width, image.Height,
            0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);       // Linear Filtering
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

        image = new Bitmap("6.jpg");
        image.RotateFlip(RotateFlipType.RotateNoneFlipY);

        rect = new Rectangle(0, 0, image.Width, image.Height);

        bitmapdata = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly,
            System.Drawing.Imaging.PixelFormat.Format24bppRgb);

        // storage for texture for one picture

        Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[0]);
        Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, (int)Gl.GL_RGB8, image.Width, image.Height,
            0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);       // Linear Filtering
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

        Gl.glViewport(0, 0, Size.Width, Size.Height);
        Gl.glMatrixMode(Gl.GL_PROJECTION);
        Gl.glLoadIdentity();

        Glu.gluPerspective(60, ((float)Size.Width / (float)Size.Height), 0.1, 1000);

    }

我不知道你的意思是什么?你是说如何创建/加载第二个纹理还是如何进行多重纹理?我想将多重纹理添加到一个数组中。Gl.glBindTexture(Gl.Gl_纹理_2D,纹理[0]);这是我加载第一个纹理并希望加载更多纹理的方式。是否要使用
glBindTexture()
绑定多个纹理?是的,我必须将它们放入数组中。到目前为止,我已经成功地放入了2个纹理,如果有,它们将覆盖索引1上的所有纹理,而且,只要多次调用
glBindTexture()
,一旦包含纹理句柄数组,就不能调用
glBindTexture()
private void initGL()
    {

        Gl.glClearDepth(1.0);
        Gl.glClearColor(0.0f, 0.2f, 0.3f, 0.0f);
        Gl.glEnable(Gl.GL_DEPTH_TEST);  // Hidden surface removal
        Gl.glFrontFace(Gl.GL_CW);           // clock-wise polygons face out
        Gl.glEnable(Gl.GL_COLOR_MATERIAL);
        Gl.glShadeModel(Gl.GL_SMOOTH);
        Gl.glEnable(Gl.GL_LIGHTING);
        Gl.glEnable(Gl.GL_LIGHT0);

        Gl.glDepthFunc(Gl.GL_LEQUAL);                               // type of depth testing
        Gl.glHint(Gl.GL_PERSPECTIVE_CORRECTION_HINT, Gl.GL_NICEST); // nice perspective calculations

        Gl.glEnable(Gl.GL_TEXTURE_2D);

        texture = new uint[6];

        Bitmap image = new Bitmap("1.jpg");
        image.RotateFlip(RotateFlipType.RotateNoneFlipY);
        System.Drawing.Imaging.BitmapData bitmapdata;
        Rectangle rect = new Rectangle(0, 0, image.Width, image.Height);

        bitmapdata = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly,
            System.Drawing.Imaging.PixelFormat.Format24bppRgb);

            // storage for texture for one picture

        Gl.glGenTextures(5, texture);
        Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[5]);
        Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, (int)Gl.GL_RGB8, image.Width, image.Height,
            0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);       // Linear Filtering
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);       // Linear Filtering

         image = new Bitmap("2.jpg");
        image.RotateFlip(RotateFlipType.RotateNoneFlipY);

         rect = new Rectangle(0, 0, image.Width, image.Height);

        bitmapdata = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly,
            System.Drawing.Imaging.PixelFormat.Format24bppRgb);

        // storage for texture for one picture

        Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[4]);
        Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, (int)Gl.GL_RGB8, image.Width, image.Height,
            0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);       // Linear Filtering
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

        image = new Bitmap("3.jpg");
        image.RotateFlip(RotateFlipType.RotateNoneFlipY);

        rect = new Rectangle(0, 0, image.Width, image.Height);

        bitmapdata = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly,
            System.Drawing.Imaging.PixelFormat.Format24bppRgb);

        // storage for texture for one picture

        Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[3]);
        Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, (int)Gl.GL_RGB8, image.Width, image.Height,
            0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);       // Linear Filtering
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

        image = new Bitmap("4.jpg");
        image.RotateFlip(RotateFlipType.RotateNoneFlipY);

        rect = new Rectangle(0, 0, image.Width, image.Height);

        bitmapdata = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly,
            System.Drawing.Imaging.PixelFormat.Format24bppRgb);

        // storage for texture for one picture

        Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[2]);
        Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, (int)Gl.GL_RGB8, image.Width, image.Height,
            0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);       // Linear Filtering
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

        image = new Bitmap("5.jpg");
        image.RotateFlip(RotateFlipType.RotateNoneFlipY);

        rect = new Rectangle(0, 0, image.Width, image.Height);

        bitmapdata = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly,
            System.Drawing.Imaging.PixelFormat.Format24bppRgb);

        // storage for texture for one picture

        Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[1]);
        Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, (int)Gl.GL_RGB8, image.Width, image.Height,
            0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);       // Linear Filtering
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

        image = new Bitmap("6.jpg");
        image.RotateFlip(RotateFlipType.RotateNoneFlipY);

        rect = new Rectangle(0, 0, image.Width, image.Height);

        bitmapdata = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly,
            System.Drawing.Imaging.PixelFormat.Format24bppRgb);

        // storage for texture for one picture

        Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[0]);
        Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, (int)Gl.GL_RGB8, image.Width, image.Height,
            0, Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);       // Linear Filtering
        Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

        Gl.glViewport(0, 0, Size.Width, Size.Height);
        Gl.glMatrixMode(Gl.GL_PROJECTION);
        Gl.glLoadIdentity();

        Glu.gluPerspective(60, ((float)Size.Width / (float)Size.Height), 0.1, 1000);

    }