anna Thành viên mới
Tổng số bài gửi : 1 Join date : 24/05/2011
| Tiêu đề: Mình vẽ elip bằng opengl nhưng khi debug chương trình thì không gặp lỗi nhưng không vẽ hình được Tue May 24, 2011 2:54 pm | |
| ĐÂY LÀ ĐOẠN CODE CỦA MÌNH // elip_tulam.cpp : Defines the entry point for the console application. //
#include "stdafx.h"
#include "glut.h" static GLfloat spin=0.0; void init() { glEnable(GL_DEPTH_TEST); glClearColor(0.0,0.0,0.0,0.0); glShadeModel(GL_FLAT);
} void duongcong(int x,int y) { glBegin(GL_POINTS); glColor3f(1.0,0.0,1.0); glVertex2i(x,y); glEnd(); } void veduongcong(int xc,int yc,int x,int y) { duongcong(xc-x,yc+y); duongcong(xc-x,yc-y); duongcong(xc+x,yc-y); duongcong(xc+x,yc+y); } void bresanham(int a,int b,int xi,int yi) { int x,y; long p; long p2; long a2=(long)a*a; long b2=(long )b*b; long two_a2= 2*a2; long two_b2=2*b2; x=0; y=b; p=a2-two_a2*b+two_b2; veduongcong( xi, yi, x, y); while (a2*y>b2*x) { if(p>=0) { p+=two_b2*(2*x+3)-two_a2*(2*y-2); y--; } else p+=two_b2*(2*x+3); x++; veduongcong( xi, yi, x, y);
} x=a;y=0; p2=b2-two_b2*a+two_a2; veduongcong( xi, yi, x, y); while(b2*x>a2*y) { if(p>=0) { p+=two_a2*(2*x+3)-two_b2*(2*y-2); x--; } else p+=two_a2*(2*y+3); y++; veduongcong( xi, yi, x, y); }
}
void display() { glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glRotatef(spin,0.0,0.0,1.0); glColor3f(1.0,0.0,1.0); bresanham(0,0,80,30); glPopMatrix(); glutSwapBuffers(); } void spindisplay(void) { spin=spin+5.0; if(spin>360.0) spin=spin-360.0; glutPostRedisplay(); } void size(int w,int h) { glViewport(0,0,(GLsizei)w,(GLsizei)h);//thiet lap vi tri man hinh theo dien tich cua so ma ban dang su dung glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-600.0,600.0,-600.0,600.0,-600.0,600.0);//thiet lap vi tri man hinh glMatrixMode(GL_MODELVIEW);//doi tuong va vi tri mat nhin glLoadIdentity(); } void mouse(int button,int state,int x,int y) { switch(button) { case GLUT_LEFT_BUTTON: if(state==GLUT_DOWN) glutIdleFunc(spindisplay); break; case GLUT_MIDDLE_BUTTON: if(state==GLUT_DOWN) glutIdleFunc(NULL); break; default: break; } } int _tmain(int argc,char** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB); glutInitWindowSize(250,250); glutInitWindowPosition(100,100); glutCreateWindow("elip"); init(); glutDisplayFunc(display); glutReshapeFunc(size); glutMouseFunc(mouse); glutMainLoop(); return 0; }
em viết cái code này nè các bác ơi nhưng chạy không được các bác giúp em cái em sắp kiểm tra | |
|