Сфера в OpenGL
Приветствую! Сегодня мы с вами нарисуем сферу с помощью OpenGL! Я надеюсь, что этот урок вам понравится и вы полюбите язык C++ также как полюбил его я.
C++ кстати говоря мне понравился именно из-за простого и понятного программирования под OpenGL, хотя программистом графиков я не стал, а стал системщиком.
ВНИМАНИЕ! ДЛЯ НАПИСАНИЯ ПРОГРАММЫ ТРЕБУЕТСЯ Microsoft Visual C++ 6.0!
СКАЧАТЬ ВЫ МОЖЕТЕ ЕГО НА САЙТЕ VBBOOK.RU!
Теперь начнем приготовление. Создайте новый проект:
File -> New -> Win32 Console Application -> Empty Project
Далее назовите его Sphere.
Затем установите:
Build -> Set Active Configuration -> Win32 Release
И добавьте в:
Project -> Settings -> Link -> Object/library modules
Библиотеки opengl32.lib, glaux.lib, glu32.lib
Все, подготовку закончили.
Вот вам код:
void CALLBACK resize(int width,int height) { glViewport(0,0,width,height); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho(-5,5, -5,5, 2,12); gluLookAt( 0,0,5, 0,0,0, 0,1,0 ); glMatrixMode( GL_MODELVIEW ); } void CALLBACK display(void) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glTranslated(0.01,0,0); glColor3d(1,0,0); auxSolidSphere( 1 ); auxSwapBuffers(); } void main() { float pos[4] = {3,3,3,1}; float dir[3] = {-1,-1,-1}; GLfloat mat_specular[] = {1,1,1,1}; auxInitPosition( 50, 10, 400, 400); auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE ); auxInitWindow( "Our First OpenGL Application!" ); auxIdleFunc(display); auxReshapeFunc(resize); glEnable(GL_DEPTH_TEST); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_POSITION, pos); glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialf(GL_FRONT, GL_SHININESS, 128.0); auxMainLoop(display); }
Не забудьте подключить библиотеки:
windows.inc
GL/gl.h
GL/glu.h
GL/glaux.h
Вот и все. А совсем ленивые могут скачать исходники в исходниках :).
Урок 7 - Движок HGE. Введение