Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

переделать без использования средств OpenGL

60K
22 мая 2010 года
Мила
1 / / 22.05.2010
Есть программка:
Реализовать трехмерное преобразование с фигурой Октаэдр (отображение одновременно относительно плоскостей XOZ и YOZ, XOZ и XOY, XOY и YOZ). Фигура должна отображаться в контурном виде без удаления невидимых линий и уметь вращаться вокруг произвольной оси. Управление преобразования по осям осуществлять с помощью десяти клавиш (<1>…<9>) на цифровой клавиатуре.
Для реализации использовалась OpenGL.
Как можно переделать без использования средств OpenGL?

файл octahedron2.cpp
Код:
// Подключаем заголовочный файл проекта
#include "octahedron2.h"

//Глобальные переменные для хранения текущих размеров окна
GLint windW, windH;
// В этой функции располагаем инициализирующие действия
static void Init(void)
{   // Светло-серый непрозрачный цвет фона в формате RGBA
// (интенсивность задается в интервале [0;1] )
glClearColor(0.5f, 0.9f, 0.75f, 1.0f);
}
//Функция отслеживания размеров окна
void CALLBACK enter1()
{
    glRotatef(1,1,0,0);
}
void CALLBACK enter2()
{
    glRotatef(1,0,1,0);
}
void CALLBACK enter3()
{
    glRotatef(1,0,0,1);
}
void CALLBACK enter4()
{
    glRotatef(0.5,1,0,0);
}
void CALLBACK enter5()
{
    glRotatef(0.5,0,1,1);
}
void CALLBACK enter6()
{
    glRotatef(0.5,0,0,1);
}
void CALLBACK enter7()
{
    glRotatef(1,1,1,0);
}
void CALLBACK enter8()
{
    glRotatef(1,1,1,1);
}
void CALLBACK enter9()
{
    glRotatef(1,0,1,1);
}
void CALLBACK enter10()
{
    glRotatef(1,1,0,1);
}
static void CALLBACK Reshape(int width, int height)
{   windW = (GLint)width;
windH = (GLint)height;
 
   
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-5, 5, -3, 3, -5, 5); // объем видимости
    glMatrixMode(GL_MODELVIEW);
}
// Функция, которая визуализирует рисунок
static void CALLBACK Draw(void)
{   // Очищаем фоновым цветом буфер цвета
    glClear(GL_COLOR_BUFFER_BIT);

glViewport(0, 0, windW, windH);

   GLUquadricObj *quadObj = gluNewQuadric();
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   
    glColor3f(0.0f, 0.0f, 0.0f);
    glPopMatrix();
    glPushMatrix();
    glTranslatef(0, 0, 0.0);
    glScalef(2.0f, 2.0f, 2.0f);
    gluQuadricDrawStyle(quadObj, GLU_LINE);
    auxWireOctahedron(1);


          // Помещаем рисунок из внеэкранного буфера в буфер экрана
    auxSwapBuffers();
    glPopMatrix();
}
// Главная функция - точка входа в прогрмму
void main(int argc, char **argv)
{   windW = 800;    // Задаем размеры окна
windH = 400;
// Определяем, где будет располагаться окно
auxInitPosition(250, 150, windW, windH);
// Поручаем библиотеке установить необходимые установки:
auxInitDisplayMode(AUX_RGBA | AUX_DOUBLE);
//Регистрация окна в системе Windows
if(auxInitWindow("Заголовок окна") == GL_FALSE)
{   // Корректное завершение работы программы
auxQuit();  }
//Вызываем вспомогательную функцию инициализации
Init();
// Указываем адрес функции, которая отслеживает размеры окна
auxReshapeFunc((AUXRESHAPEPROC)Reshape);
auxKeyFunc(48,enter1);
auxKeyFunc(49,enter2);
auxKeyFunc(50,enter3);
auxKeyFunc(51,enter4);
auxKeyFunc(52,enter5);
auxKeyFunc(53,enter6);
auxKeyFunc(54,enter7);
auxKeyFunc(55,enter8);
auxKeyFunc(56,enter9);
auxKeyFunc(57,enter10);
auxIdleFunc(Draw);
// Указываем адрес функции, которая отвечает за перерисовку окна
  auxMainLoop(Draw);
}


файл octahedron2.h
Код:
#include <windows.h> // включаем файл для работы с Windows
// подключаем заголовочные файлы библиотеки OpenGL
#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
// запрещаем предупреждения о преобразовании типов данных
#pragma warning(disable : 4305)    // см. help
#pragma warning(disable : 4244)  
// декларируем вспомогательные функции для работы с OpenGL
static void Init(void ); // функция инициализации
// функция отслеживания размеров окна
static void CALLBACK Reshape(int width,int height);
static void CALLBACK Draw(void); // функция рисования


Помогите плиз :rolleyes:
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог