Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2010, 17:32   #1
alhon
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 146
По умолчанию непонятная функция

проблема такая пишу вращающийся тор. Ошибка в коде и не знаю что делать. Код такой

Код:
#include <glut.h>
#include <gl\gl.h>
#include <gl\glu.h>
#include <math.h>
#include <gltools.h>
///////////////////////////
//устанавливаеться состояние визуализации
void SetupRC()
{
	//Чёрный фон
	glClearColor(0.0f, 1.0f, 1.0f, 0.1f);
	//Цвет рисования выбираеться зелёным
	glColor3f(0.0f, 1.0f, 0.0f);
}

//вызываеться процедура рисования сцены
void RenderScene(void)
{
	
    GLTMatrix transformationMatrix;
	static GLfloat yRot = 0.0f;
	yRot += 0.5f;
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	gltRotationMatrix(gltDegToRad(yRot), 0.0f, 1.0f, 0.0f, transformationMatrix);
	transformationMatrix[12] = 0.0f;
	transformationMatrix[13] = 0.0f;
    transformationMatrix[14] = -2.5f;
	
	DrawTorus(transformationMatrix);  !!!!!!!!! ошибка здесь!!!!!    
	
	glutSwapBuffers();

   }

////////////////////////////////////////////
void ChangeSize(GLsizei w, GLsizei h)
{

	GLfloat fAspect;
	if(h ==  0)
		h =1;
	glViewport(0, 0, w, h);
	fAspect = (GLfloat)w/(GLfloat)h;
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(45.0f, fAspect, 1.0, 470.0);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}

//Точка входа основной программы
void main(void)
{
//сообщает библиотеке GLUT, какой тип режима отображения использовать при создания окна
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);   //GLUT_SINGLE - окно с простой буферизацией(1 буфер) и режим цвета RGBA - GLUT_RGB
//создаёт окно на экране
glutCreateWindow("my");
//функция RenderScene устанавливаеться как функция обратного вызова дисплея
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
//В этой ф-ии выполняем всю инициализацию OpenGL, которую нужно выполнить перед визуализацией
SetupRC();
//Эта ф-ция запускает оболочку GLUT
glutMainLoop();
}
вот ошибка в DrawTorus(transformationMatrix);
" error C3861: 'DrawTorus': identifier not found"

в книге написано функция DrawTorus "мы не будим приводить всю функцию. необходимую для рисования тора а обратим ваше внимание на такие строки:

Код:
objectVertex[0] =x0*r;
objectvertex[1] = y0*r;
objectvertex[2] =z;

gltTransformpoint(objectVertex, mTransform, transformedvertex);
glvertex3fv(transformedvertex);
я не пойму а где я должен её полностью написать?
я подключил нужные бибиотеки но не в одной из них нет ф-ии DrawTorus.
подскажите что делать?

Последний раз редактировалось Beermonza; 07.06.2010 в 17:37.
alhon вне форума Ответить с цитированием
Старый 07.06.2010, 17:52   #2
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Что-то не припомню я такой функции в OGL... Может это отдельно описанная в книге ф-ия?
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 07.06.2010, 18:29   #3
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Цитата:
Может это отдельно описанная в книге ф-ия?
Скорее всего так и есть. Поищите в книгу повнимательнее, попробуйте по смыслу дописать.
Вадим Буренков вне форума Ответить с цитированием
Старый 07.06.2010, 23:52   #4
alhon
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 146
По умолчанию

спасибо завтра на свежую голову, посижу подумаю, если не получится, то мож ещё спрошу

Последний раз редактировалось Beermonza; 08.06.2010 в 16:50.
alhon вне форума Ответить с цитированием
Старый 08.06.2010, 17:15   #5
alhon
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 146
По умолчанию

значит так ф-ция DrawTorus про нё написано вот что
void gltDrawTorus(GLfloat majorRadius, GLfloat minorRadius, GLint numMajor, GLint numMinor); + координаты точек, GLfloat minorRadius, GLint numMajor, GLint numMinor - принимают какие-то значения. Я пытался сам написать ф-цию чтоб тор ( в виде бублика) вращался, но не получилось. Не маогли бы вы написать алгоритм к моемы алгоритму чтобы тор вращался, но алгоритм в однов файле( т.е. в моём алгоритме, Допустим, между #include и void SetupRC() был алгоритм тора,всё что не хватает. Потому что в *.h файле- матрица написана в начале файле а ф-ция в конце.

Зарание спасибо
alhon вне форума Ответить с цитированием
Старый 08.06.2010, 17:17   #6
alhon
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 146
По умолчанию

и трудно пнять что ещё относиться к моему проекту
alhon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятная ошибка Vladya Помощь студентам 0 08.05.2010 13:52
Непонятная ошибка. jojahti Общие вопросы C/C++ 4 05.09.2009 20:39
Непонятная проблема. ROD Компьютерное железо 17 05.09.2009 11:09
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50