游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1680|回复: 2

谁来帮我看一下我这段程序有什么错

[复制链接]

108

主题

180

帖子

250

积分

中级会员

Rank: 3Rank: 3

积分
250
QQ
发表于 2005-5-31 15:33:00 | 显示全部楼层 |阅读模式
具体错误就是程序能运行,但不能进行纹理映射.

#include <GL/glut.h>
#include <gl/glaux.h>
#include <gl/glu.h>
#include <gl/gl.h>
#include <stdio.h>
#include <windows.h>

#include <stdlib.h>

GLuint        texture[1];                        // Storage For One Texture ( NEW )

/* GLUT callback Handlers */
AUX_RGBImageRec *LoadBMP(char *Filename)                                // Loads A Bitmap Image
{
        FILE *File=NULL;                                                                        // File Handle

        if (!Filename)                                                                                // Make Sure A Filename Was Given
        {
                return NULL;                                                                        // If Not Return NULL
        }

        File=fopen(Filename,"r");                                                        // Check To See If The File Exists

        if (File)                                                                                        // Does The File Exist?
        {
                fclose(File);                                                                        // Close The Handle
                return auxDIBImageLoad(Filename);                                // Load The Bitmap And Return A Pointer
        }

        return NULL;                                                                                // If Load Failed Return NULL
}

int LoadGLTextures()                                                                        // Load Bitmaps And Convert To Textures
{
        int Status=FALSE;                                                                        // Status Indicator

        AUX_RGBImageRec *TextureImage[1];                                        // Create Storage Space For The Texture

        memset(TextureImage,0,sizeof(void *)*1);                   // Set The Pointer To NULL

        // Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit
        if (TextureImage[0]=LoadBMP("NeHe.bmp"))
        {
                Status=TRUE;                                                                        // Set The Status To TRUE

                glGenTextures(1, &texture[0]);                                        // Create The Texture

                // Typical Texture Generation Using Data From The Bitmap
                glBindTexture(GL_TEXTURE_2D, texture[0]);
                glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
                glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
        }

        if (TextureImage[0])                                                                        // If Texture Exists
        {
                if (TextureImage[0]->data)                                                        // If Texture Image Exists
                {
///////////////////////////////////////////////////////////        ////////////////////////////////       
           free(TextureImage[0]->data);                            // Free The Texture Image Memory
                }

                free(TextureImage[0]);                                                                // Free The Image Structure
        }

        return Status;                                                                                // Return The Status
}

static void
resize(int width, int height)
{
    const float ar = (float) width / (float) height;
   
    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0);
   
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity() ;
}

static void
display(void)
{
   
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
           glLoadIdentity();
           glTranslatef(0.0,0.0,-5.0);
           glBindTexture(GL_TEXTURE_2D, texture[0]);
   

        glBegin(GL_QUADS);
                // Front Face
  glColor3f(0.0,1.0,0.0);
        glTexCoord2f(1.0f, 0.0f); glVertex2f(-1.0f, 1.0f);
                glTexCoord2f(0.0f, 0.0f); glVertex2f( -1.0f, -1.0f);
                glTexCoord2f(0.0f, 1.0f); glVertex2f( 1.0f,  -1.0f);
                glTexCoord2f(1.0f, 1.0f); glVertex2f(1.0f,  1.0f);

        glEnd();

    glutSwapBuffers();
}


static void
key(unsigned char key, int x, int y)
{
    switch (key)
    {
        case 27 :
        case 'q':
            exit(0);
            break;

      
    }

    glutPostRedisplay();
}

static void
idle(void)
{
    glutPostRedisplay();
}


/* Program entry point */

int
main(int argc, char *argv[])
{
    if (!LoadGLTextures())                                                                // Jump To Texture Loading Routine ( NEW )
        {
                return FALSE;                                                                        // If Texture Didn't Load Return FALSE
        }

    glutInit(&argc, argv);
    glutInitWindowSize(640,480);
    glutInitWindowPosition(10,10);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("FreeGLUT Shapes");

    glutReshapeFunc(resize);
    glutDisplayFunc(display);
    glutKeyboardFunc(key);
    glutIdleFunc(idle);
   
    glEnable(GL_DEPTH_TEST);
        glEnable(GL_TEXTURE_2D);
   
  
    glutMainLoop();

    return EXIT_SUCCESS;
}

7

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2005-6-2 10:43:00 | 显示全部楼层

Re: 谁来帮我看一下我这段程序有什么错

我也不会,我初学者。不好意思

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2005-6-2 15:27:00 | 显示全部楼层

Re:谁来帮我看一下我这段程序有什么错

#include <GL/glut.h>
#include <gl/glaux.h>
#include <gl/glu.h>
#include <gl/gl.h>
#include <stdio.h>
#include <windows.h>

#include <stdlib.h>

GLuint texture[1]; // Storage For One Texture ( NEW )

/* GLUT callback Handlers */
AUX_RGBImageRec *LoadBMP(char *Filename) // Loads A Bitmap Image
{
FILE *File=NULL; // File Handle

if (!Filename) // Make Sure A Filename Was Given
{
return NULL; // If Not Return NULL
}

File=fopen(Filename,"r"); // Check To See If The File Exists

if (File) // Does The File Exist?
{
fclose(File); // Close The Handle
return auxDIBImageLoad(Filename); // Load The Bitmap And Return A Pointer
}

return NULL; // If Load Failed Return NULL
}

int LoadGLTextures() // Load Bitmaps And Convert To Textures
{
int Status=FALSE; // Status Indicator

AUX_RGBImageRec *TextureImage[1]; // Create Storage Space For The Texture

memset(TextureImage,0,sizeof(void *)*1);            // Set The Pointer To NULL

// Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit
if (TextureImage[0]=LoadBMP("NeHe.bmp"))
{
Status=TRUE; // Set The Status To TRUE

glGenTextures(1, &texture[0]); // Create The Texture

// Typical Texture Generation Using Data From The Bitmap
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}

if (TextureImage[0]) // If Texture Exists
{
if (TextureImage[0]->data) // If Texture Image Exists
{
/////////////////////////////////////////////////////////// ////////////////////////////////
    free(TextureImage[0]->data);                            // Free The Texture Image Memory
}

free(TextureImage[0]); // Free The Image Structure
}

return Status; // Return The Status
}

static void
resize(int width, int height)
{
    const float ar = (float) width / (float) height;
   
    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0);
   
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity() ;
}

static void
display(void)
{
   
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    glTranslatef(0.0,0.0,-5.0);
    glBindTexture(GL_TEXTURE_2D, texture[0]);
   

glBegin(GL_QUADS);
// Front Face
  glColor3f(0.0,1.0,0.0);
        glTexCoord2f(1.0f, 0.0f); glVertex2f(-1.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex2f( -1.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex2f( 1.0f,  -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex2f(1.0f,  1.0f);

glEnd();

    glutSwapBuffers();
}


static void
key(unsigned char key, int x, int y)
{
    switch (key)
    {
        case 27 :
        case 'q':
            exit(0);
            break;

      
    }

    glutPostRedisplay();
}

static void
idle(void)
{
    glutPostRedisplay();
}


/* Program entry point */

int
main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitWindowSize(640,480);
    glutInitWindowPosition(10,10);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("FreeGLUT Shapes");
    glutReshapeFunc(resize);
    glutDisplayFunc(display);
    glutKeyboardFunc(key);
    glutIdleFunc(idle);   
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_TEXTURE_2D);
    if (!LoadGLTextures()) // Jump To Texture Loading Routine ( NEW )
    {
    return FALSE; // If Texture Didn't Load Return FALSE
    }   
    glutMainLoop();
    return EXIT_SUCCESS;
}


load texture太早了,ogl环境还建立呢,texture memory还不可用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-25 21:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表