• 大小: 7KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: 其他
  • 标签: openGL  图像纹理  

资源简介

利用openGL设置茶壶的纹理贴图及其他操作。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 

void myinit(void);
void CALLBACK display(void);
void CALLBACK reshape(GLsizei wGLsizei h);

//  定义一个一维纹理的数据,从生成来看,保持红色、兰色分量255(MAX),
//  所以是渐变的紫色纹理,饱和度不断变化。
#define TEXTUREWIDTH 64
GLubyte Texture[3*TEXTUREWIDTH];
void makeTexture(void)
{
    int i;
    for(i=0;i    {
        Texture[3*i] =255;
        Texture[3*i+1] =255-2*i;
        Texture[3*i+2] =255;
    }
}
GLfloat sgenparams[]={1.01.01.00.0};

void myinit(void)
{
    auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
    auxInitPosition(00500500);
    auxInitWindow(“sample1“);
    glClearColor(0.00.00.00.0);
    glClear(GL_COLOR_BUFFER_BIT);
    //  创建纹理
    makeTexture();
    glPixelStorei(GL_UNPACK_ALIGNMENT1);
    //  控制纹理
    glTexEnvf(GL_TEXTURE_ENVGL_TEXTURE_ENV_MODEGL_MODULATE);
    glTexParameterf(GL_TEXTURE_1DGL_TEXTURE_WRAP_SGL_REPEAT);
    glTexParameterf(GL_TEXTURE_1DGL_TEXTURE_MAG_FILTERGL_LINEAR);
    glTexParameterf(GL_TEXTURE_1DGL_TEXTURE_MIN_FILTERGL_LINEAR);
    glTexImage1D(GL_TEXTURE_1D03TEXTUREWIDTH0
                GL_RGBGL_UNSIGNED_BYTETexture);
    //  唯一与前面例子不同的地方:启用纹理坐标自动产生,生成环境纹理
    //  纹理的方向S
    glTexGeni(GL_SGL_TEXTURE_GEN_MODEGL_object_LINEAR);
    glTexGenfv(GL_SGL_object_PLANEsgenparams);
    //  启用纹理
    glEnable(GL_TEXTURE_1D);
    glEnable(GL_TEXTURE_GEN_S);

    //  启用消隐
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);
    glDepthFunc(GL_LESS);

    //  一些绘图控制,详细可参阅VC5联机帮助
    glEnable(GL_CULL_FACE);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_AUTO_NORMAL);
    glEnable(GL_NORMALIZE);
    glFrontFace(GL_CW);
    glCullFace(GL_BACK);
    glMaterialf(GL_FRONTGL_SHININESS64.0);
    //  glShadeModel(GL_FLAT);
}

void CALLBACK reshape(GLsizei wGLsizei h)
{

    glViewport(00wh);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    if(w<=h)
        glOrtho(-4.04.0-4.0*(GLfloat)h/(GLfloat)w
           4.0*(GLfloat)h/(GLfloat)w-4.04.0);
    else
        glOrtho(-4.0*(GLfloat)h/(GLfloat)w
            4.0*(GLfloat)h/(GLfloat)w-4.04.0-4.04.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

void CALLBACK display(void)
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    glRotatef(30.01.00.00.0);
    //  利用辅助库函数绘制一个茶壶
    auxSolidTeapot(1.5);
    glPopMatrix();
    glFlush();
}

void main(void)
{
    myinit();
    auxReshapeFunc(reshape);
    auxMainLoop(display);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3515  1999-12-04 01:37  带纹理的茶壶\Exam02.dsp

     文件        537  1999-12-04 01:37  带纹理的茶壶\Exam02.dsw

     文件      41984  2006-01-11 11:28  带纹理的茶壶\Exam02.ncb

     文件      53760  2006-01-11 11:28  带纹理的茶壶\Exam02.opt

     文件       1070  1999-12-04 01:37  带纹理的茶壶\Exam02.plg

     文件       2733  1999-11-26 07:39  带纹理的茶壶\Texture.c

     目录          0  2006-01-11 11:28  带纹理的茶壶

----------- ---------  ---------- -----  ----

               103817                    8


评论

共有 条评论