Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OpenGL - Дисплейные спики, Что это такое? Как добавить в программу? 
:(
    Опции темы
Konoval
Дата 2.9.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 2.9.2007

Репутация: нет
Всего: нет



Здравствуйте уважаемые специалисты =)
Начался новый семестр и появилась такой пример Компьютерная графика.
Первым заданием было создание следующей программы:
1.    устанавливать необходимое программное обеспечение.
2.    создавать консольные приложения в VisualC++ с использованием библиотек OpenGL.
3.    понимать структуру программы .
4.    задавать двухмерную внешнюю систему координат.
5.    работать с различными графическими примитивами.
6.    изменять атрибуты графических примитивов.
7.    иметь представление о нормали.
8.    работать с цветом.
9.    создавать дисплейные списки.
С первыми восемью пунктами все понятно и они реализованы, но как реализовать пунк 9?
Код

#include "stdafx.h" 
#include <GL/glut.h>
struct ppos {
    GLfloat x;
    GLfloat y;
};


GLubyte gSpade[] = 
{
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x1f, 0xff, 0xff, 0xf8, 0x1f, 0x00, 0x00, 0xf8,
    0x01, 0xc0, 0x03, 0x80, 0x00, 0x70, 0x0e, 0x00,
    0x00, 0x20, 0x04, 0x00, 0x00, 0x30, 0x0c, 0x00,
    0x00, 0x10, 0x08, 0x00, 0x00, 0x18, 0x18, 0x00,
    0x07, 0xc4, 0x23, 0xe0, 0x0f, 0xf8, 0x1f, 0xf0,
    0x38, 0x1c, 0x38, 0x1c, 0x30, 0x00, 0x00, 0x0c,
    0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06,
    0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06,
    0x60, 0x00, 0x00, 0x06, 0x30, 0x00, 0x00, 0x0c,
    0x30, 0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, 0x18,
    0x0e, 0x00, 0x00, 0x70, 0x03, 0x00, 0x00, 0xc0,
    0x60, 0xc0, 0x03, 0x00, 0x00, 0x70, 0x0e, 0x00,
    0x00, 0x18, 0x18, 0x00, 0x00, 0x0c, 0x30, 0x00,
    0x00, 0x07, 0xe0, 0x00, 0x00, 0x03, 0xc0, 0x00,
    0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
};


void disp(void)
{
    double p1 [] = {-4,3,0};
    double p2 [] = {4,2,0};
   glClear(GL_COLOR_BUFFER_BIT);

 glPointSize(10);
  glEnable(GL_POINT_SMOOTH);  
  glBegin(GL_POINTS);  
   glColor3d(0.5,0.1,0.3);  
   glVertex3d(-4.5,5,0); 

   glColor3d(1,1,0);  
   glVertex3d(-1,3,0);  

   glColor3d(1,0,1);     
   glVertex3d(-3.5,2.5,0);
  glEnd();
  glDisable(GL_POINT_SMOOTH);  
 
  glPointSize(10);
  glEnable(GL_POINT_SMOOTH);  
  glBegin(GL_POINTS);  
   glColor3d(1,1,0);  
   glVertex3d(2.5,3,0); 

   glColor3d(0.3,0.2,0.1);  
   glVertex3d(3,1,0);   

   glColor3d(0,0,1);     
   glVertex3d(1.5,3,0);
  glEnd();
  glDisable(GL_POINT_SMOOTH); 
glPointSize(15);
glBegin(GL_POINTS);
glColor3d(0.5,0.5,1);
glVertex3dv(p1);
glVertex3dv(p2);
glEnd();

glBegin(GL_POINTS);
glColor3d(0,0,0);
ppos point;
point.x=3;
point.y=2;
glVertex3f(point.x,point.y,0);
glEnd();

//

glLineWidth(1);       
                      
 glBegin(GL_LINES);
 
  glColor3d(1,0,1);     
  glVertex3d(-3.5,5,0); 
  glVertex3d(2.5,3,0); 

  glColor3d(1,1,1);     
  glVertex3d(-3,3.3,0); 
  glVertex3d(4,3.4,0); 
  
 glEnd();

 glLineWidth(5);
 glEnable(GL_LINE_SMOOTH); 
 glEnable(GL_LINE_STIPPLE);

 glLineStipple(2,41730);   
 glBegin(GL_LINE_LOOP);
  glColor3d(1,0,0);
  glVertex3d(3,3,0);
  glVertex3d(-1,3,0);
  glColor3d(0,1,0);
  glVertex3d(-3.1,2.7,0); 
  glColor3d(0,0,1);
  glVertex3d(2.5,3.7,0); 
  glEnd();
 glDisable(GL_LINE_SMOOTH);
 glDisable(GL_LINE_STIPPLE);


 //


 glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
 glBegin(GL_POLYGON);
 glColor3d(1,0,0);
 glVertex3d(-1,1,0);
 glColor3d(0,1,0);
 glVertex3d(3,2,0);
 glColor3d(0,0,1);
 glVertex3d(0,0,0);
 glEnd();

 glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
 glBegin(GL_POLYGON);
 glColor3d(1,0,0);
 glVertex3d(-3,5,0);
 glColor3d(0,1,0);
 glVertex3d(1,0,0);
 glColor3d(0,0,1);
 glVertex3d(0,0,0);
 glEnd();

 glEnable(GL_POLYGON_STIPPLE);
 glPolygonStipple(gSpade);
 glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
 glBegin(GL_POLYGON);

 glColor3d(1,0,0);
 glVertex3d(-8,1,0);
 glColor3d(0,1,0);
 glVertex3d(-8,3,0);
 glColor3d(1,0,1);
 glVertex3d(0,0,0);
  glEnd();
 glDisable(GL_POLYGON_STIPPLE);
   glFlush();                     
}
void main(int argc, char** argv)
{
    glutInit(&argc, argv);            
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); 
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(640, 480);
    glutCreateWindow("OpenGL");
    glClearColor(0.5, 0.5, 0.5, 0.0);  
    glMatrixMode(GL_PROJECTION);       
    gluOrtho2D(-8.0, 8.0, 0.0, 8.0);    
    glutDisplayFunc(disp);    
    glutMainLoop();                
}



Как в данну программу добавить дисплейные списки и какого  их общее назначение?

Это сообщение отредактировал(а) Konoval - 2.9.2007, 13:49
PM MAIL   Вверх
DjoNIK
Дата 3.9.2007, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: нет
Всего: 5



Список отображения (дисплейные списки) – это группа команд OpenGL, сохраненная для дальнейшего исполнения. Когда исполняется список отображения, команды, включенные в него, исполняются в том порядке, в котором они были заданы. Большинство команд OpenGL могут быть как сохранены в списке отображения, так и выполняться в непосредственном режиме, в котором они выполняются немедленно. В одной программе вы можете смело смешивать код непосредственного режима с использованием списков отображения. Во всех примерах программ до этого момента все команды исполнялись в непосредственном режиме. В данной главе обсуждаются списки отображения и то, как их лучше использовать.

Добавлено через 7 минут и 10 секунд
Вот тебе орывок из красной книги по спискам отображения:


Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  OGL.rar 36,38 Kb


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.