OpenGL communityФорумВопросы по программированию

Помогите разобрать пример (2 стр)

Страницы: 1 2
#15
18:32, 7 дек 2012

Переделал 1й пример

void CSphereView::Initialize()
{
  glClearColor(1.0, 0.0, 0.0, 1.0); 
  glMatrixMode(GL_PROJECTION); 
  glLoadIdentity(); 
  glOrtho(-200.0, 200.0, -200.0, 200.0, -5.0, 5.0); 
}

void CSphereView::Draw()
{
   glClear(GL_COLOR_BUFFER_BIT); 
 glColor3f(0.0, 1.0, 0.0); 
 glBegin(GL_POINTS); 
  glVertex2f(0.0, 0.0); 
 glEnd(); 
 glFlush();//только для GLUT_SINGLE 
}

void CSphereView::OnButtonClick()
{
  char *str="progname";
  int argc=1;
  char **argv;
  *argv=str;

  glutInit(&argc, argv);
  glutInit(&argc, argv); 
  glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); 
  glutInitWindowSize(400, 400); 
  glutInitWindowPosition(100, 200); 
  glutCreateWindow("Lesson 01"); 

  //Регистрация 
  glutDisplayFunc(Draw);//Рисование 
  Initialize(); 
  glutMainLoop(); 
}

Вроде бы все нормально, но ругается на строку glutDisplayFunc(Draw);//Рисование
error C3867: 'CSphereView::Draw': function call missing argument list; use '&CSphereView::Draw' to create a pointer to member

#16
18:50, 7 дек 2012

glutDisplayFunc(&CSphereView::Draw);

Вроде бы так. Тут уже надо крестовиков спрашивать.

#17
21:05, 7 дек 2012

И так я тоже пробовал, подчеркивает &

#18
20:20, 8 дек 2012

Нашел я пример с рисованием сферы, вокруг которой крутятся другие сферы. Но не понятны некоторые моменты, надеюсь вы опять мне поможете)
Есть там такой не очень понятный мне кусок кода:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// очистка буфер цвета и глубину

  //  Перспектива
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  float fAspect = 1.0f*clientRect.right / clientRect.bottom;
  float ugol = 80.0f;
  gluPerspective(ugol, fAspect, 1.0f, 1000.0f);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  glTranslatef(0.0f, 0.0f, nearer);

GL_COLOR_BUFFER_BIT - вроде бы понял зачем, чтобы при каждом обновлении прошлые планеты исчезали.
GL_DEPTH_BUFFER_BIT - так и не понял, что это за глубина и зачем это...Если убрать этот параметр - вообще не рисуется ничего

Так же я не понимаю зачем менять эти glMatrixMode();, похоже что для перспективы нужно использовать один Мод а для сдвигов и т.д. - другой.
glLoadIdentity(); считывает текущую матрицу. Зачем? Понять эту строку мой не высокий интеллект мне тоже не позволил(

#19
16:36, 12 дек 2012

GuitarFan
> GL_DEPTH_BUFFER_BIT - так и не понял, что это за глубина и зачем это...Если
> убрать этот параметр - вообще не рисуется ничего
гуглим "что такое буфер глубины"

> И так я тоже пробовал, подчеркивает &
гуглим "указатель на метод класса", "Си делегаты"


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

#20
20:32, 12 дек 2012

VirT
> гуглим
...
> гуглим

Я так понял, в данном случае надо гуглить Кернигана и Ричи, потом Страуструпа. А перед этим надо гуглить учебник информатики.

Страницы: 1 2
OpenGL communityФорумВопросы по программированию

Тема в архиве.