鱼C论坛

 找回密码
 立即注册
查看: 2292|回复: 0

大神帮忙看看这段代码是怎么错的啊?

[复制链接]
发表于 2013-5-9 12:06:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
//// TT.cpp : Defines the entry point for the console application.
////

//#include "stdafx.h"

#include <gl/glut.h>
#include <math.h>
#define DEG_TO_RAD 0.017453
#define n 100
float a=45.0;
int r=2;
int i=1;
float deta=3;
float detz=0.15;

float eyetheta = 0.0f;

void idle()
{
         eyetheta = eyetheta + 0.1f;
         glutPostRedisplay();
}

void display()
{
        glClearColor(0.0,0.0,0.0,0.0);
        glClear(GL_COLOR_BUFFER_BIT);
        glColor3f(1.0,1.0,1.0);

        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();


        glOrtho(-10.0,10.0,-10.0,10.0,-50.0,100.0);
       

        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();


        gluLookAt( 50,50,15.0,0.0,0.0,7,0.0,0,1.0);

        for(i=0;i<n;i++)
        {
               
         float utheta = i * deta;
         float dtheta = ( i - 1 ) * deta;

         float uz =i*detz;
         float dz = ( i - 1 ) * detz;


         GLint vertices[][3]={
                { r * cos( DEG_TO_RAD*( 45 + dtheta ) ), r * sin( DEG_TO_RAD * ( 45 + dtheta )), dz},
                { r * cos( DEG_TO_RAD*( 45 + utheta ) ), r * sin( DEG_TO_RAD * ( 45 + utheta )), uz },
                {r * cos( DEG_TO_RAD*( 135 + dtheta ) ), r * sin( DEG_TO_RAD * ( 135 + dtheta )), dz },
                { r * cos( DEG_TO_RAD*( 135 + utheta ) ), r * sin( DEG_TO_RAD * ( 135 + utheta )), uz },
                {r * cos( DEG_TO_RAD*( 225 + dtheta ) ), r * sin( DEG_TO_RAD * ( 225 + dtheta )), dz},
                {r * cos( DEG_TO_RAD*( 225 + utheta ) ), r * sin( DEG_TO_RAD * ( 225 + utheta )), uz},
                {r * cos( DEG_TO_RAD*( 315 + dtheta ) ), r * sin( DEG_TO_RAD * ( 315 + dtheta )), dz },
                { r * cos( DEG_TO_RAD*( 315 + utheta ) ), r * sin( DEG_TO_RAD * ( 315 + utheta )), uz},
                { r * cos( DEG_TO_RAD*( 45 + dtheta ) ), r * sin( DEG_TO_RAD * ( 45 + dtheta )), dz},
                { r * cos( DEG_TO_RAD*( 45 + utheta ) ), r * sin( DEG_TO_RAD * ( 45 + utheta )), uz },};


               

        glEnable(GL_POLYGON_MODE);
        glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );

        glEnableClientState(GL_VERTEX_ARRAY);
        glVertexPointer(3,GL_INT,0,vertices);
        glDrawElements(GL_TRIANGLE_STRIP,24,GL_UNSIGNED_INT,vertices);}


                /*glBegin(GL_TRIANGLE_STRIP);

glNormal3f( cos( DEG_TO_RAD*( 45 + dtheta ) ), sin( DEG_TO_RAD * ( 45 + dtheta )), 0 );
        glVertex3f( r * cos( DEG_TO_RAD*( 45 + dtheta ) ), r * sin( DEG_TO_RAD * ( 45 + dtheta )), dz );

        glNormal3f( cos( DEG_TO_RAD*( 45 + utheta ) ) , sin( DEG_TO_RAD * ( 45 + utheta )), 0 );
        glVertex3f( r * cos( DEG_TO_RAD*( 45 + utheta ) ), r * sin( DEG_TO_RAD * ( 45 + utheta )), uz );

        glNormal3f( cos( DEG_TO_RAD*( 135 + dtheta ) ), sin( DEG_TO_RAD * ( 135 + dtheta )), 0 );
        glVertex3f( r * cos( DEG_TO_RAD*( 135 + dtheta ) ), r * sin( DEG_TO_RAD * ( 135 + dtheta )), dz );

        glNormal3f( cos( DEG_TO_RAD*( 135 + utheta ) ) , sin( DEG_TO_RAD * ( 135 + utheta )), 0 );
        glVertex3f( r * cos( DEG_TO_RAD*( 135 + utheta ) ), r * sin( DEG_TO_RAD * ( 135 + utheta )), uz );

        glNormal3f( cos( DEG_TO_RAD*( 225 + dtheta ) ), sin( DEG_TO_RAD * ( 225 + dtheta )), 0 );
        glVertex3f( r * cos( DEG_TO_RAD*( 225 + dtheta ) ), r * sin( DEG_TO_RAD * ( 225 + dtheta )), dz );
       
        glNormal3f( cos( DEG_TO_RAD*( 225 + utheta ) ) , sin( DEG_TO_RAD * ( 225 + utheta )), 0 );
        glVertex3f( r * cos( DEG_TO_RAD*( 225 + utheta ) ), r * sin( DEG_TO_RAD * ( 225 + utheta )), uz );

        glNormal3f( cos( DEG_TO_RAD*( 315 + dtheta ) ), sin( DEG_TO_RAD * ( 315 + dtheta )), 0 );
        glVertex3f( r * cos( DEG_TO_RAD*( 315 + dtheta ) ), r * sin( DEG_TO_RAD * ( 315 + dtheta )), dz );

        glNormal3f( cos( DEG_TO_RAD*( 315 + utheta ) ) , sin( DEG_TO_RAD * ( 315 + utheta )), 0 );
        glVertex3f( r * cos( DEG_TO_RAD*( 315 + utheta ) ), r * sin( DEG_TO_RAD * ( 315 + utheta )), uz );

        glNormal3f( cos( DEG_TO_RAD*( 45 + dtheta ) ), sin( DEG_TO_RAD * ( 45 + dtheta )), 0 );
        glVertex3f( r * cos( DEG_TO_RAD*( 45 + dtheta ) ), r * sin( DEG_TO_RAD * ( 45 + dtheta )), dz );

        glNormal3f( cos( DEG_TO_RAD*( 45 + utheta ) ) , sin( DEG_TO_RAD * ( 45 + utheta )), 0 );
        glVertex3f( r * cos( DEG_TO_RAD*( 45 + utheta ) ), r * sin( DEG_TO_RAD * ( 45 + utheta )), uz );


        glArrayElement(0);
        glArrayElement(1);
        glArrayElement(2);
        glArrayElement(3);
        glArrayElement(4);
        glArrayElement(5);
        glArrayElement(6);
        glArrayElement(7);
        glArrayElement(1);
        glArrayElement(0);*/


        /*glVertex3iv(vertices[0]);
        glVertex3iv(vertices[1]);
        glVertex3iv(vertices[2]);
        glVertex3iv(vertices[3]);
        glVertex3iv(vertices[4]);
        glVertex3iv(vertices[5]);
        glVertex3iv(vertices[6]);
        glVertex3iv(vertices[7]);
        glVertex3iv(vertices[0]);
        glVertex3iv(vertices[1]);

       

         
        glEnd();*/
         

        glutSwapBuffers();
}

// Lighting data
GLfloat lightAmbient[] = { 0.2f, 0.2f, 0.2f, 1.0f };
GLfloat lightDiffuse[] = { 0.7f, 0.7f, 0.7f, 1.0f };
GLfloat lightSpecular[] = { 0.9f, 0.9f, 0.9f };
GLfloat materialColor[] = { 0.8f, 0.0f, 0.0f };
GLfloat vLightPos[] = { -80.0f, 120.0f, 100.0f, 0.0f };
GLfloat ground[3][3] = { { 0.0f, -25.0f, 0.0f },
                         { 10.0f, -25.0f, 0.0f },
                         { 10.0f, -25.0f, -10.0f } };


void main(int argc, char** argv)
{
        glutInit(&argc,argv);
        glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);

        glutInitWindowSize(500,500);
        glutInitWindowPosition(0,0);
        glutCreateWindow("Orthogonal projection");

        glutDisplayFunc(display);
        glutIdleFunc( idle );

        //glEnable(GL_DEPTH_TEST);
        glDepthFunc(GL_LEQUAL);
        glEnable(GL_COLOR_MATERIAL);

        glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmbient);
        glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDiffuse);
        glLightfv(GL_LIGHT0, GL_SPECULAR, lightSpecular);
        glEnable(GL_LIGHTING);
        glEnable(GL_LIGHT0);
        //glMaterialfv(GL_FRONT, GL_SPECULAR,lightSpecular);
        //glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, materialColor);
        //glMateriali(GL_FRONT, GL_SHININESS,128);

        glutMainLoop();
}



小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-28 20:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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