// Подключаем заголовочный файл проекта
#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);
}
переделать без использования средств OpenGL
Реализовать трехмерное преобразование с фигурой Октаэдр (отображение одновременно относительно плоскостей XOZ и YOZ, XOZ и XOY, XOY и YOZ). Фигура должна отображаться в контурном виде без удаления невидимых линий и уметь вращаться вокруг произвольной оси. Управление преобразования по осям осуществлять с помощью десяти клавиш (<1>…<9>) на цифровой клавиатуре.
Для реализации использовалась OpenGL.
Как можно переделать без использования средств OpenGL?
файл octahedron2.cpp
Код:
файл 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); // функция рисования
// подключаем заголовочные файлы библиотеки 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: