Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
239.
ReaVeR
(28.06.2005 15:41)
0
Текстуры в Ресурсах - Выложены небольшой набор текстур к книге, а также несколько моделей. (8ой параграф)
я начал писать книгу о 3D; написал 1ую главу (системах координат/векторах/матрицах и т.д.). помогите оценить/исправить. :) И вообще, заходите на мой сайт. Книга лежит в Книги->Трёхмерная графика...
|
238.
jed
(28.06.2005 15:24)
0
1) Обычное окошко с "Отправить отчет / Не отправлять" 2) Started Tue Jun 28 15:18:26 2005 Created resource source ConfigParser: parsing Arwen.cfg ConfigParser: done parsing Arwen.cfg Creating OpenGlView Width: 640, Height: 480 Bits per pixel: 32 Fullscreen false Cannot locate ../Textures/font.tga 3) это я и делаю. Скачал "arwen-bin", там тоже нет текстур. Где их брать? Надеюсь они не тяжелые.
|
237.
Алекс Боресков
(27.06.2005 11:31)
0
А с каким сообщением вылетает ? Что пишет в лог ? Попробуйте запустить уже откомпилированный файл.
|
236.
jed
(25.06.2005 17:32)
0
Скачал engine.zip engine_libs.zip Скомпилировал. Debug & Release При запуске - exe вылетает. Я чтото не так делаю?
|
235.
Алекс Боресков
(23.06.2005 15:00)
0
Добрый день !
Со сравнением Вы полностью правы. С разборкой заголовка - тоже поправил, сейчас залью
|
234.
Zombie
(23.06.2005 06:14)
0
Доброго времени суток=)
В исправленной версии написано: if ( ( byte & 0xC0 ) > 0xC0 ) // XXX: == 0xC0 Но тогда эта проверка никогда не пройдет ( byte ведь всегда "обрезается" максимум до 0xC0 ). Проверка if ( byte > 0xC0 ) дает верный результат.
Прошу прощения, что не написал обо всех ошибках сразу - проверка данных в заголовке PCX-файла написана следующим образом: if ( hdr -> numPlanes == 1 ) { if ( hdr -> bitsPerPixel != 1 && hdr -> bitsPerPixel != 2 && hdr -> bitsPerPixel != 8 ) return NULL; } else if ( hdr -> numPlanes == 3 ) { if ( hdr -> bitsPerPixel != 1 ) return NULL; } else if ( hdr -> numPlanes == 4 ) { if ( hdr -> bitsPerPixel != 1 ) return NULL; } else if ( hdr -> numPlanes == 3 ) { if ( hdr -> bitsPerPixel != 8 ) return NULL; } else return NULL;
Обратите внимание на две одинаковые проверки if ( hdr -> numPlanes == 3 ). Получается что при hdr -> bitsPerPixel равном 8 и трех битовых плоскостях, что вполне допускается спецификацией формата, картинка все равно будет отбракована.
|
233.
ReaVeR
(22.06.2005 19:00)
0
Как устроен анимированный GIF? Как надо изменить загрузчик GIF-файла чтобы поддерживать анимацию (если предположить, что записывать в текстуру нужно подряд, кадр за кадром, как массив).
P.S. как насчёт подстроить гостевуху под общий стиль сайта?
|
232.
Алекс Боресков
(22.06.2005 19:00)
0
Спасибо !!! Я поправил код - теперь и мышь работает и учел Ваше замечание про РСХ
|
231.
Zombie
(22.06.2005 03:43)
0
Здравствуйте.
Обновленная версия у меня почему-то не воспринимает движения мыши( Насчет декодера PCX: программа теперь не падает, но картинка загружается все равно не правильно. Дело в лишней строке for ( int p = 0; p < hdr -> numPlanes; p++ ) // for every plane
Буквально только что заметил еще баг в том же декодере:
if ( ( byte & 0xC0 ) == 0xC0 ) { count = byte & 0x3F;
if ( ( byte = data -> getByte () ) == -1 ) { delete pixelBuf; delete planeBuf;
return NULL; } } else count = 1;
Проверка if ( ( byte & 0xC0 ) == 0xC0 ) возвратит значение true даже если byte равен 0xC0. Но в таком случае count = byte & 0x3F будет равен 0, чего быть не должно. Если заменить эту проверку на if ( byte > 0xC0 ), то при byte == 0xC0, count будет равен 1.
Отыскал в сети исходник где проверка такая же: http://gpwiki.org/index.php/LoadPCXCpp
Удач!
|
230.
Алекс Боресков
(21.06.2005 13:25)
0
Большое спасибо - действительно у меня была ошибка. Я выложил исправленную версию движка.
|
229.
Zombie
(20.06.2005 22:15)
0
Здравствуйте, Алекс!
При загрузке PCX-картинок с помощью исходного кода Arwen долго не мог понять почему же палитровые картинки загружаются нормально, а rgb24 запарывают прогу.
В итоге понял, что в функции Object * PcxDecoder :: decode ( Data * data ) при распаковке RLE-данных неверно организован цикл - там написано так: for ( int p = 0; p < hdr -> numPlanes; p++ ) // for every plane for ( x = 0; x < hdr -> bytesPerRow; ) // real unpacking
Т.е. распаковка идет по всем битовым плоскостям по очереди, причем считается, что если байты относящиеся к одной битовой плоскости кончились, то RLE-блок тоже завершен. Это подходит для картинок с одной битовой плоскостью, но в случае 2-3 плоскостями возникает ошибка.
Я исправил код следующим образом: for ( x = 0; x < scanLineLength; ), где int scanLineLength = hdr -> numPlanes * hdr -> bytesPerRow;
Также заменил for ( ; count > 0 && x < width; count--, x++ ) planeBuf [index++] = byte; на for ( ; count > 0 && x < scanLineLength; count--, x++ ) planeBuf [index++] = byte;
Работает =)
|
228.
Алекс Боресков
(20.06.2005 16:43)
0
Добрый день !
Насчет VC 7.1 - обязательно проверю, просто сейчас под рукой 7.1 (и очень не хочется ставить .net)
Про отражение - дело в том, что использование виртуального экрана возможно лишь для плоского зеркала. Если есть несколько плоских граней, то можно построить точные отражения. А в общем случае использование виртуального экрана не будет давать точного отражения - представьте себе зеркальный чаник. На нем должны быть места, отражающие сами себя. И как это реалмизовать при помощит карты отражений. Максимум, что можно - это динамически рендерить сцену в cube map и использовать env. mapping. Но это все равно лишь приближение.
Насчет паскаля и С++ - я лично очень давно ушел с паскаля и возвращаться не собираюсь. Но это сугубо мое личное НО. Почти в любой программистской эхе или форуме Вы найдете море писем на эту тему.
|
227.
Ivan
(20.06.2005 06:00)
0
Снова вопрос о Си++ и Паскале.
Здраствуйте. Так и не нашел ни одного человека, который бы сказал, в чем мощь Си. Ведь и тот и другой компилятор требует, например, описание функций, перед их использованием, и считывание кода клавиши, и реакции мышки - все то же самое. Только в Паскале там весь текст читабелен и проще, а в Си какие -то значки типа &&, !, !!, >>, <<, :: и др., что замусоривает сам текст, да и лишние они. Знаете, мне все больше и больше кажется, что программеры на си это понимают, и видят простоту Паскаля или Делфи. Но только скрепят зубами (ведь переучиваться надо) и продолжают утверждать что си это куул. Это похоже на то, что в патриархальном обществе (например совейский союз) мужики утверждали, что они умнее и лучше чем женщины, и всячески их угнетали и унижали, что бы не дай Бог женщина не показала, что она не глупее, а даже умнее и практичнее, как это видно сейчас. А вот проги, что на си, что на Паскале для Опен Джи Эл, насколько я видел, одинаково прекрасны и демонстрируют все одинаковые возможности.
|
226.
Ivan
(20.06.2005 06:00)
0
Зеркальность в OpenGL Здраствуйте. У меня такой вопрос. Знаю, что в программировании зеркальности или отражения используют разные искуственные методы - наприм буфер трафарета. Вообще, для истинного 3-Д моделированние аналогу трассировки лучей я не вижу, реализм настоящий, но в играх медленный и не годен. Хочу спросить про такое, а почему для имитации зеркальности не пользоваться таким реальным приемом. В месте, где нужна зеркальность, мы помещаем как бы виртуальный экран, делаем снимок этой реальной сцены (это может делать сама Опен ДжиЭл, и делаем из него текстуру, каую и проэцируем на объект, как правило сначала это - чайник :) легко и без осложнений, а активный экран снова переносим на место наблюдателя, - в принципе такое возможно ??.
|
225.
Cpt. Gav
(18.06.2005 02:54)
0
Здравствуйте, дорогой Алексей. Ознакомился с вашей новой книгой. Класс. Я осознал, что вообще мало в чём рабирался. Ну, разве что диффузное освещение грамотно строил )). Правда как всегда возникли маленькие трудности: nmake от Студии 7.1 без ошибок компилирует примеры, вот только полученные файлы вызывают ошибку при запуске. Видимо на этапе создания окна (в консольном окне данные о драйвере отображаются корректно). А затем, как всегда, что-то пишется не по тому адресу... Подскажите выход из ситуации. Заранее, спасибо.
|
|
|
|