Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 4 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 17.10.2003
Откуда: Киев
#77
Только начал разбираться с OpenGL. Простейшая программа, а чайник почему-то рисуется неправильно. Как исправить?
Код:
#include "stdafx.h"
#include "afxwin.h"
#include "GL/glut.h"
#include "GL/glaux.h"
#include "math.h"

float pos[3]={200,-200,120};
float dir[3]={0,0,0};
float mat_dif[]={1,1,0.3,1};
float mat_amb[]= {0.4,0.4,0.4,1};
float mat_spec[]={1,1,1,1};
float shininess=0.2*128;
void spinDisplay(void)
{
glutPostRedisplay();
}

void init (void)
{
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective (70, 1, 50, 0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(200, 200, 00, 0, 0, 0, 0, 1400, 0);
glEnable(GL_ALPHA_TEST);
//glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0,GL_POSITION,pos);
glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,dir);
glEnable(GL_NORMALIZE) ;
}

void display (void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glMaterialfv (GL_FRONT,GL_AMBIENT,mat_amb);
glMaterialfv (GL_FRONT,GL_DIFFUSE,mat_dif);
glMaterialfv (GL_FRONT,GL_SPECULAR,mat_spec);
glMaterialf (GL_FRONT,GL_SHININESS,shininess);
glutSolidTeapot(100);
glRotatef( 1, 0 , 1 , 0 );
glutSwapBuffers();
}

int main(int argc, char* argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow("Двойная буферизация");
init();
glutDisplayFunc(display);
glutIdleFunc(spinDisplay);
glutMainLoop();
return(0);
}




Партнер
 

Member
Статус: Не в сети
Регистрация: 28.11.2003
Откуда: москва
предлагаю раскомментировать
//glEnable(GL_DEPTH_TEST);


 

Member
Статус: Не в сети
Регистрация: 17.10.2003
Откуда: Киев
ModeZt
тогда получается вот что:
#77
внешне очень похоже на переразгон видеокарты :) .

И тогда еще один вопрос. У меня есть поверхность из треугольников, их координаты каждый кадр расчитываются математически. Я правильно понимаю, что чтоб задать нормаль для треугольника, нужно просто математически посчитать ее по координатам, а каких-нибудь встроенных функций в OpenGL для этого нет?


 

Member
Статус: Не в сети
Регистрация: 17.10.2003
Откуда: Киев
Уже помогли, тему можно закрывать


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 4 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan