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

★★★★★

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

andreyu ★★★★★
()

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

JackYF ★★★★
()

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

anonymous
()

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

anonymous
()
Ответ на: комментарий от stassats

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

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

anonymous
()

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

seiken ★★★★★
() автор топика
Ответ на: комментарий от seiken

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

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