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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Освещение, Конвертация в int 
:(
    Опции темы
russians
Дата 3.12.2006, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



При передвижении источника освещения:
float frot = -GetTickCount() * PI/3000.0f;
GLfloat lightpos[] = {5.0f*cosf(frot), 10.0f, sinf(frot), 0.0f};
освещение идёт рывками, то есть идёт конвертация в int. Как это дело исправить?

PM MAIL   Вверх
Rickert
Дата 4.12.2006, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



russians, юморист блин 8) Ты как в радианты переводишь, двоешник? Нужно умножать на Пи и делить на 180, а не на 3000


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
russians
Дата 4.12.2006, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Стараюсь, что делать smile
Но всё равно обрывы в освещении, кусками идёт...
PM MAIL   Вверх
russians
Дата 19.12.2006, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60, 640.0f/480, 1.0f, 100);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt(0, 0, 1.5, 0, 0, 0, 0, 1, 0);  // ïîëîæåíèå êàìåðû
    const float PI = 3.141592654; // êîíñòàíòà
    float frot = -GetTickCount() * PI/180.0f;
    GLfloat lightpos[] = {5.0f*cosf(frot), 10.0f, sinf(frot), 0.0f}; // ïîçèöèÿ îñâåùåíèÿ
    GLfloat lightdiffuse[] = {1, 1, 1, 1}; // ïàðàìåòðû äèôôóçíîãî ñâåòà
    GLfloat lightspecular[] = {1, 1, 1, 1}; // ïàðàìåòðû çåðêàëüíîãî ñâåòà
    GLfloat matdiff[] = {1, 1, 1, 1};
    GLfloat matspec[] = {1, 1, 1, 1};
    GLfloat matambient[] = {0.8f, 0.8f, 0.2f, 0.1f};
    glLightfv(GL_LIGHT0, GL_POSITION, lightpos); // ñîçäàíèå èñòî÷íèêà ñâåòà
    glLightfv(GL_LIGHT0, GL_DIFFUSE, lightdiffuse); // ñîçäàíèå èñòî÷íèêà äèôôóçíîãî ñâåòà
    glLightfv(GL_LIGHT0, GL_SPECULAR, lightspecular); // ñîçäàíèå èñòî÷íèêà çåðêàëüíîãî ñâåòà
    glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, matdiff); //  ñâîéñòâà ìàòåðèàëà çàäíåé è ïåðåäíåé ãðàíè (ðàññåÿííûé ñâåò)
    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, matspec); // îòðàæåíèå
    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, matambient); // ðàññåÿííûé ñâåò
    glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 20.0f); // ñòåïåíü îòðàæàåìîãî ñâåòà
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); // î÷èùàåì áóôåð öâåòà è áóôåð ãëóáèíû
    glTranslatef(0.0, 0.0, -1.0);
    glRotatef(angleY, 0, 0.1, 0);
    glRotatef(angleX,-0.1, 0, 0);


И почему прыгает скачками, а не плавно?
PM MAIL   Вверх
russians
Дата 21.12.2006, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Господа, я уже устал выводить сообщение на первые ряды smile
(Модератора прошу объединить сообщения в одно)
PM MAIL   Вверх
Rickert
Дата 21.12.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



А ты enable свету делаешь вообще?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
russians
Дата 23.12.2006, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А як же:
Код

void Init()
{
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glShadeModel(GL_SMOOTH);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_NORMALIZE);
    glClearColor(0.1f, 0.1f, 0.1f, 0.1f);
    glViewport(0, 0, 640, 480);
}

PM MAIL   Вверх
russians
Дата 24.12.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Господа!!!  smile 
PM MAIL   Вверх
russians
Дата 25.12.2006, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Дело срочное, мне завтра это сдавать надо, неужели никто не может помочь?
Вот код целиком:

Это сообщение отредактировал(а) russians - 25.12.2006, 11:54

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  detravrash.cpp 13,87 Kb
PM MAIL   Вверх
russians
Дата 31.12.2006, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ладно, всё уже поправил сам, Rickert, насчёт float frot = -GetTickCount() * PI/(float)(n)) неправ был, n регулирует здесь скорость вращения вокруг эллипса, поэтому с двоечником зря  smile А конвертацию в инт убрал, переведя результат, который выдавала GetTickCount(), во float:
float frot = -((float)GetTickCount()) * PI/1000.0f...
PM MAIL   Вверх
Rickert
Дата 1.1.2007, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



russians, ты о чём гвооришь!!!!!!!!!!!!!! Это как в одной строне что-ли взяли и округлили число Пи до 4 ? smile 
Это, блин, монументальный закон! Чтобы перевести градусы в радианы, надо умножить на Пи и разделить на 180 градусов! А вот потом уже можешь делить хоть на сколько. Погрешности выйдут боком smile 


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
russians
Дата 1.1.2007, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Поизменяй значения в исходнике:
  float frot = -((float)GetTickCount()) * PI/1000.0f;
На 180 источник света будет бешено вращаться вокруг детали.
На 1000 плавно обходит траекторию.

Это сообщение отредактировал(а) russians - 1.1.2007, 21:17

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  detravrash.cpp 15,74 Kb
PM MAIL   Вверх
Rickert
Дата 2.1.2007, 06:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



russians, Так есесно, угол меньше сделай. И вообще - поставь зависимость от интервала вращения. Мол за 1 сек. - проходит 360 градусов. На самом деле, твой код будет по-разному работать на разных машинах - тактовая частота-то разная


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
russians
Дата 2.1.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Кстати, там один трабл есть (до сих пор), после выхода из программы её тело зависает в памяти, хз почему. Приходится через диспечер задач вручную удалять.
PM MAIL   Вверх
Rickert
Дата 2.1.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



russians, А как ты "выходишь"?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
russians
Дата 2.1.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



На форме крестик smile Я подозреваю, что он только форму закрывает...
PM MAIL   Вверх
Rickert
Дата 2.1.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



russians, А как ты вообщем инициализируешь? smile


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

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

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


 




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


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

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