Программирование CUDA/OpenGL

reboot

Ословед
В рамках курсовой написсал симпатичный модуль к Delphi.
Суть его заключается в следующем:
- возможность экспорта WaveFront формата (.obj) в программу;
- обьект загружается вместе с библиотекой материаллов (.mtl если есть);
- прикреплена поддержка текстур в формате .bmp, .jpg, .tga;

Если будете использовать, мой вам совет - не используйте 3DS Max для конвертации обьектов в OBJ-формат. Это чудо так зазналось, что напридумывала свои стандарты (хотя это не его родной формат). Впрочем я проверял только с моделями использубщими библиотеку материаллов, возможно с тесктурами и Максовские экспорты будут норм рендериться.
 

reboot

Ословед
Практикум по программированию под OpenGL на Delphi.
Архивчик содержит множество примеров от простого к сложному
 

KL9YnEr

Ословед
Такая проблема, при включении полноэкранного режима, окно разворачивается на весь экран, но полосочка снияу синяя (там где пуск), всеравно сверху моего окна!!
Кака исправить??
 

Neo_S

Ословед
Такая проблема, при включении полноэкранного режима, окно разворачивается на весь экран, но полосочка снияу синяя (там где пуск), всеравно сверху моего окна!!
Кака исправить??
Поиграйся со стилями окна. Вроде в полноэкранном режиме нужно ставить WS_OVERLAPPED
 

KL9YnEr

Ословед
Опять проблема, короче, при повороте камеры, получается, что игрок типо вертит головой, но если повернуть голову например вправо, и пойти вперед, то он пойдет не туда куда смотрит, а туда, куда бы он пошел вперед, когда голова смотрела вперед, короче, типо система координат не поворачивается, смотрел в других проектах(в том числе и в ReLi), вроде тоже самое. Для лучшего понимание проблемы, можете посмотреть на мое творениев теме про собственные движки
PS как при помощи glu создать сферу или чайник на сцене???
 

KL9YnEr

Ословед
Извините, меня товарищи, просто по своей глупости дал вам не точную информацию, с системой координат все в порядке, просто намудрил с примитивом, вот все и глючило))
проблема вот в чем, в сцене почемуто отрисовка происходит только на ~метр вперед, назад, продвигаешься вперед и прорисовывается еще чуть-чуть, короче смотрите сами
ЗЫ Как только откроется окно, сразу давите вниз, что опустить камеру.
ЗЫЫ Также активен вопрос про глу
 

KL9YnEr

Ословед
Народ, тут такая проблема, начал в своем "мега движке" писать юнит про текстуры и тут столкнулся с такой проблемой, поскольку нормальных статей на эту тематику я найти не смог, а си++ я знаю на 2-, то приходится переписывать чужие юниты, потом соединять и делать наилучший вариант!
Дак вот в чем проблема : Вообщем я скажу что я думаю, а вы мне скажите, правильно я размышляю или я чето напутал и сравниваю разные вещи:
Вообщем фильтрация текстуры, тоесть сглаживание может быть:
Отсутствовать, тоесть маленткие разноцветные квадратики, напоминающие картинку:wow:
Билинейной, издалека смотрится нормально а вблизи хреново
Анизотропичная, мало чем отличается от предыдущей, но всеравно, вроде получше
PS Еще в одной демке видел трехлинейную - это возможно???
PPS Ответьте поскорей, а то жуть как не люблю ждать пока на твой пост ответят!!
 
как сообщает нам "суперкнига" в OpenGL существует 2 базовых текстурных фильтра GL_NEAREST и GL_LINEAR (по соседним элементам и линейная фильтрация соответственно). анизотропия относится к поддерживаемым расширениям.
из того, что я помню: трилинейная является вариацией линейной, но в отличие от би- интерполяция происходит по большему числу соседних текселей текстуры. анизотропия не "мало чем отличается от предыдущей", а учитывает помимо всего прочего угол поворота текстуры относительно камеры и является наиболее качественной (и наиболее требовательной к ресурсам) обработкой, нужно просто поставить значение побольше... плюс добить все это полноэкранным сглаживанием и вуаля!..
 

KL9YnEr

Ословед
Народ, такая проблема, сделал у ся в двжке поддержку BMP текстур, но как только компилирую проект(с созданным спрайтом с такой текстурой) то все норм компилируется тока ошибка сразу вылазит
PS Вот архив со скрином ошибки и кодом текстур (красной строчкой выделил, на какую строку кидает после вылета, причем она не красной подсвечивает, как обычно при ошибках, а синей и еще со стрелкой))
 

Neo_S

Ословед
написано же ошибка четния :) Проверь корректноть файла, возможно путь к нему неправльно указываешь или файл битый.
 

KL9YnEr

Ословед
Эээ, вот в первом посте, там архив, который Неос собирал, там вообщем в статьях в анимации, есть пара статей, по импорту 3д максовских файликов, но для удобства автор написал какуюто утилитку(MEGA называется), но ее нет в статьях, а если нажимаешь сохранить, то он ваще хз на какой сайт лезит(с какойто косметикой), ну если кто может найдите плиз эту утилиту, может есть у кого такая???
 

reboot

Ословед
Попробовал заменить файл, проверил директорию, но все равно чето не хочет
У меня была такая проблема в OS. Если честно я не помню в чём суть, вроде это из за различия форматов. Т.е. формат вроде один - bmp, а кодировка разная. Это как открываешь в блокноте скачанный с америкосовского сайта txt-файл, а там китайские иероглифы. Попробуй для загрузки текстур вот этот файлик. У меня всё работает на ура (правда я больше пользуюсь jpg, но с bmp то же проблем не возникало).
P.S. Хороший юнит, жаль только что формат png не поддерживается:sorry:
 

    KL9YnEr

    очки: 8
    Спасибо канеш, но я с этим уж давноо разобрался))

reboot

Ословед
Есть ли примеры к Суперкниге? :)
Не встречал именно к Суперкниге примеры, но ты можешь накачать исходников и разбираться в них с помощью сего чуда;)
Я, например, постоянно туда заглядываю, когда нужно в чём то разобраться
 

KL9YnEr

Ословед
Думаю все, из здесь присутствующих, рисовали в ГЛе прямоугольники(GL_QUAD), и поворачивали их на определенный угол.
Дак проблема вот в чем : Когда поворачиваешь прямоугольник, то он поворачивается не относительно центра, а относительно нижней левой точки. Дак можно ли както поворачивать именно относительно центра?? Или может какието формулы есть??
 

reboot

Ословед
Думаю все, из здесь присутствующих, рисовали в ГЛе прямоугольники(GL_QUAD), и поворачивали их на определенный угол.
Дак проблема вот в чем : Когда поворачиваешь прямоугольник, то он поворачивается не относительно центра, а относительно нижней левой точки. Дак можно ли както поворачивать именно относительно центра?? Или может какието формулы есть??

Вот

Procedure Draw2DSpr(X,Y,W,H,Rotate:Single;Texture : Cardinal);
begin
// Width и Height (Размер OGL окна .. находится обычно в Obects)
SetProjection(Width, Height,true); // Установка проекции под 2д

glTranslatef(x, y, 0.2); // Переносим позицию мира
GlRotatef(Rotate,0,0,1); // Разворачиваем мир

GlBindTexture(GL_TEXTURE_2D, Texture); // Подключение текстуры
glBegin(GL_QUADS); // Наченаем рисовать кубы
//Устанавливем текст координады ; Ставим точку
glTexcoord2f(1, 1); glVertex2f( W , 0);
glTexcoord2f(0, 1); glVertex2f( 0 , 0);
glTexcoord2f(0, 0); glVertex2f( 0 , H);
glTexcoord2f(1, 0); glVertex2f( W , H);
glEnd; // Останавливаем рисование

SetProjection(Width, Height,false); // Установка проекции под 3д

end;

Procedure Draw2DSpr2(X,Y,W,H,Rotate:Single;Texture : Cardinal);
Var
X2, Y2 : Single;
begin
SetProjection(Width, Height,true); // Установка проекции под 2д
x2 := w /2;
y2 := h /2;
glTranslatef((x+x2), (y+y2), 0.2); // Переносим позицию мира
GlRotatef(Rotate,0,0,1); // Разворачиваем мир

GlBindTexture(GL_TEXTURE_2D, Texture); // Подключение текстуры
//Устанавливем текст координады ; Ставим точку
glBegin(GL_QUADS); // Наченаем рисовать кубы
glTexcoord2f(0 , 1); glVertex2f(-x2 , -y2 );
glTexcoord2f(1 , 1); glVertex2f( x2 , -y2 );
glTexcoord2f(1 , 0); glVertex2f( x2 , y2 );
glTexcoord2f(0 , 0); glVertex2f(-x2 , y2 );
glEnd; // Останавливаем рисование

SetProjection(Width, Height,false); // Установка проекции под 3д
end;
Первая процедура рисует с поворотом вокруг угла, а вторая - вокруг центра. Могу ошибаться, но вроде так. Я этот код давно уже не использовал...
 

reboot

Ословед
Скачал недавно пару видео уроков и что то совсем забыл про них. Вот выкладываю, может кому будет интересно:
OpenGL1.swf 25.03 Мб
OpenGL2.swf 13.53 Мб
 
Сверху