LINUX.ORG.RU

OpenGL


0

0

Большая просьба всем обладателям gcc 4.3.x поставить libglut, собрать эту программу и сообщить, что она показывает в окне.

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

GLUquadricObj* sphere;
GLdouble radius = 0.5;
GLint slices = 20;
GLint stacks = 20;
GLfloat sphere_coord[3] = {0.0,0.0,0.0};

void init(void)
{
GLfloat mat_specular[] = {1.0,1.0,1.0,1.0};
GLfloat mat_diffuse[] = {0.5,0.0,0.0,0.0};
GLfloat mat_shininess[] = {100.0};
GLfloat light0_position[] = {-1.0,1.0,-3.0,0.0};
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
glLightfv(GL_LIGHT0, GL_POSITION, light0_position);
glEnable(GL_DEPTH_TEST);
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_SMOOTH);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
}

void drawSphere(float x, float y, float z, GLUquadricObj* sphere,
GLfloat radius, GLint slices, GLint stacks)
{
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glTranslatef(x, y, z);
gluQuadricDrawStyle(sphere, GLU_FILL);
gluSphere(sphere, radius, slices, stacks);
glPopMatrix();
}

void display(void)
{
int i;
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glColor3f(0.3, 0.1, 0.7);
drawSphere(sphere_coord[0], sphere_coord[1], sphere_coord[2], sphere, radius, slices, stacks);
glFlush ();
}

void reshape (int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glOrtho(-1.0, 1.0, -1.0, 1.0, 2.0, -1.0);
glTranslatef(0.0, 0.0, -1.0);
}

int main(int argc, char** argv)
{
int i;
sphere = gluNewQuadric();

glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}

Собирать вот так:

gcc -o prog prog.c -lGL -lglut

★★★★★

Re: OpenGL

4.3.х не использую, но на i686-pc-linux-gnu-4.1.2 все работает.

andreyu ★★★★★ ()

Re: OpenGL

Увидел красный шар в окне.

JackYF ★★★★ ()

Re: OpenGL

Шарик красный... на чёрном фоне...

anonymous ()

Re: OpenGL

ребята, вспомнил как один человек просил запустить однострочник на перле... тут, правда, ничего страшного не нашёл, но всё равно внутри ёкнуло...

anonymous ()
Ответ на: Re: OpenGL от anonymous

Re: OpenGL

Я всегда вспоминаю строчку на перле при таких просьбах...

stassats ★★★★ ()
Ответ на: Re: OpenGL от stassats

Re: OpenGL

во-первых тут все прозрачно..понятно, что каждый программер просмотрит код, прежде чем запускать...

во-вторых что мешает запустить под новым пользователем? или вообще в chroot? :)

anonymous ()

Re: OpenGL

Код прозрачен и чист, а я не люблю тупые шутки. Вопрос решён, проблема, по всей видимости, заключалась в различиях реализаций OpenGL в венде и линуксе.

seiken ★★★★★ ()
Ответ на: Re: OpenGL от seiken

Re: OpenGL

Основное "различие" там - тупейшая система инициализации расширений в виндах. ТруЪ вроде Кармака со товарищи пишут бинды этих костылей на собственные указатели (например qglTexture2D == glTexture2D), менее Ъ предпочитают glew.

svr4 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.