发新话题
打印

跪求“用C语言中的自定义函数编个简单的应用程序”

跪求“用C语言中的自定义函数编个简单的应用程序”

跪求“用C语言中的自定义函数编个简单的应用程序

TOP

看到跪求两字就恶心~~

TOP

难道你是奴隶么?~

TOP

回复 3# 的帖子

这不是着急吗

TOP

#include <stdio.h>
void fun()
{
     printf("meaningless\n");
}
main()
{
    fun();
}
因为梦想而努力,因为有你而精彩!
mail: qianzongming@gmail.com

TOP

回复 5# 的帖子

哥们   谢了  这个我也会 我是说还有没有比这个复杂点的

TOP

#include <gl/glut.h>
#include <gl/glext.h>

int nTex[2];

float s[]={1.0,0.0,0.0,0.0};
float t[]={0.0,1.0,0.0,0.0};
float r[]={0.0,0.0,1.0,0.0};

double Matrix_ModelView[16]={0.0};
double Matrix_Projection[16]={0.0};
int Viewport[4];
double Pos[3]={0.0};
float fang;

void ReProj(void)
{
        glMatrixMode(GL_TEXTURE);
        glLoadIdentity();
        glTranslatef(0.5,0.5,0.5);
        glScalef(0.5,0.5,0.5);
        gluPerspective(20.0,1.0,1.0,100.0);
        gluLookAt(0.0,10.0,10.0,
                Pos[0],Pos[1]+0.9,Pos[2],
                0.0,1.0,0.0);
}

void SetupRC(void)
{
        unsigned char pData[]={
        0,0,0,0,
        0,0,0,0,
        0,0,0,0,
        0,0,0,0,

        0,0,0,0,
        128,128,128,255,
        128,128,128,255,
        0,0,0,0,

        0,0,0,0,
        128,128,128,255,
        128,128,128,255,
        0,0,0,0,

        0,0,0,0,
        0,0,0,0,
        0,0,0,0,
        0,0,0,0,
        };

        glClearColor(0.0,0.2,0.4,1.0);
       
        glGenTextures(2,nTex);
        glBindTexture(GL_TEXTURE_2D,nTex[0]);
        glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,4,4,0,GL_RGBA,GL_UNSIGNED_BYTE,pData);

        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);
        glTexParameteri(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);

        glBindTexture(GL_TEXTURE_2D,nTex[1]);
        glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,4,4,0,GL_RGBA,GL_UNSIGNED_BYTE,pData);

        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_R,GL_CLAMP);
        glTexParameteri(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);

        glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR);
        glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR);
        glTexGeni(GL_R,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR);

        glAlphaFunc(GL_GREATER,0.1);
        glBlendFunc(GL_ZERO,GL_ONE_MINUS_SRC_COLOR);

        glEnable(GL_TEXTURE_2D);
        glEnable(GL_DEPTH_TEST);

}

void DrawWithTex(void)
{
        glBegin(GL_QUADS);
                glTexCoord2f(1.0,0.0);
                glVertex3f(-20.0,-5.0,-20.0);

                glTexCoord2f(0.0,0.0);
                glVertex3f(-20.0,-5.0,20.0);

                glTexCoord2f(0.0,1.0);
                glVertex3f(20.0,-5.0,20.0);

                glTexCoord2f(1.0,1.0);
                glVertex3f(20.0,-5.0,-20.0);
        glEnd();
//Teapot
        glDisable(GL_TEXTURE_2D);
        glMatrixMode(GL_MODELVIEW);
        glPushMatrix();
        glTranslatef(Pos[0],Pos[1]+0.9,Pos[2]);
        glutSolidTeapot(1.0);
        glPopMatrix();
        glEnable(GL_TEXTURE_2D);
}

void DrawWithoutTex(void)
{
        glBegin(GL_QUADS);
                glVertex3f(-20.0,-5.0,-20.0);

                glVertex3f(-20.0,-5.0,20.0);

                glVertex3f(20.0,-5.0,20.0);

                glVertex3f(20.0,-5.0,-20.0);
        glEnd();
}

void RenderScene(void)
{
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        glPushMatrix();

        glTranslatef(0.0,0.0,-35.0);

        glRotatef(fang,0.0,1.0,0.0);
       
        glGetDoublev(GL_MODELVIEW_MATRIX,Matrix_ModelView);
        glGetDoublev(GL_PROJECTION_MATRIX,Matrix_Projection);
        glGetIntegerv(GL_VIEWPORT,Viewport);

        glBindTexture(GL_TEXTURE_2D,nTex[0]);
        glMatrixMode(GL_TEXTURE);
        glLoadIdentity();
        DrawWithTex();

        glBindTexture(GL_TEXTURE_2D,nTex[1]);

        glTexGenfv(GL_S,GL_EYE_PLANE,s);
        glTexGenfv(GL_T,GL_EYE_PLANE,t);
        glTexGenfv(GL_R,GL_EYE_PLANE,r);

        glEnable(GL_TEXTURE_GEN_S);
        glEnable(GL_TEXTURE_GEN_T);
        glEnable(GL_TEXTURE_GEN_R);
        ReProj();
        glPolygonOffset(-0.1,0.0);
        glEnable(GL_POLYGON_OFFSET_FILL);

        glEnable(GL_ALPHA_TEST);
        glEnable(GL_BLEND);

        DrawWithoutTex();

        glDisable(GL_BLEND);
        glDisable(GL_ALPHA_TEST);
        glPolygonOffset(0.0,0.0);
        glDisable(GL_POLYGON_OFFSET_FILL);

        glDisable(GL_TEXTURE_GEN_S);
        glDisable(GL_TEXTURE_GEN_T);
        glDisable(GL_TEXTURE_GEN_R);

        glMatrixMode(GL_MODELVIEW);
        glPopMatrix();

        glutSwapBuffers();
}

void ChangeSize(GLuint w,GLuint h)
{
        if(!h)
                h=1;
        glViewport(0,0,w,h);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluPerspective(45.0f,(float)w/(float)h,1.0f,300.0f);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
}

void Mouse(int key,int up,int x,int y)
{
        float Depth;
        double Obj[3];
        y=Viewport[3]-y;
        if(!up)
        {
                glReadPixels(x,y,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&Depth);
                gluUnProject(x,y,Depth,Matrix_ModelView,Matrix_Projection,Viewport,Obj,Obj+1,Obj+2);
                Pos[0]=Obj[0];
                Pos[1]=Obj[1];
                Pos[2]=Obj[2];
                glutPostRedisplay();
        }
}

void Timer(int v)
{
        fang+=0.6;
        if(fang>360.0)
                fang-=360.0;

        glutTimerFunc(33,Timer,1);
        glutPostRedisplay();
}

void main(void)
{
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
        glutCreateWindow("Test");
        glutDisplayFunc(RenderScene);
        glutReshapeFunc(ChangeSize);
        glutTimerFunc(33,Timer,1);
        glutMouseFunc(Mouse);

        SetupRC();
        glutMainLoop();
}
本帖最近评分记录
  • Teenits 学分 +5 2008-5-16 19:03

TOP

TOP

会简单的,然后自己摸索。。。你要做到什么目的

TOP

发新话题