Сообщения на форуме пользователя Andrey (29 стр.)
DevIL (OpenIL) & MipMap | 20 июля 2011 | 15:32 | #28 |
---|
KaronatoR
texture.cpp:
mips != 0 ?
Вижу цикл загрузки мип уровней, если есть вызов ilActiveMipmap (i), то результат вызовов ilGetDXTCData, ilGetInteger (IL_IMAGE_WIDTH), ilGetInteger (IL_IMAGE_HEIGHT), будут зависеть от выбранного мипа функцией ilActiveMipmap (i) или нет?
проверь это, т.е. заведи переменные:
Судя по твоему коду и исходникам DevIL библиотека учитывает mip Уровни и подгружает нужные мипы и возвращает значение высоты и ширины от выбранного мипа.
попробуй убери: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, mips-1);
texture.cpp:
int mips = ilGetInteger (IL_NUM_MIPMAPS);
проверь это, т.е. заведи переменные:
int width = ilGetInteger (IL_IMAGE_WIDTH); int height= ilGetInteger (IL_IMAGE_HEIGHT); glCompressedTexImage2D (GL_TEXTURE_2D, i, format, width , height, 0, comp_size, buffer); |
попробуй убери: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, mips-1);
DevIL (OpenIL) & MipMap | 19 июля 2011 | 9:33 | #25 |
---|
KaronatoR
залей проект, попробую глянуть.
залей проект, попробую глянуть.
DevIL (OpenIL) & MipMap | 18 июля 2011 | 20:06 | #23 |
---|
KaronatoR
а мип уровни есть? ты должен давать сжатые пиксели при загрузки для каждого мип уровня. Если ты используешь код из поста 18 и ставишь GL_LINEAR_MIPMAP_LINEAR, то при фильтрации будет попытка взять несуществующий мип уровень.
поставь glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
а мип уровни есть? ты должен давать сжатые пиксели при загрузки для каждого мип уровня. Если ты используешь код из поста 18 и ставишь GL_LINEAR_MIPMAP_LINEAR, то при фильтрации будет попытка взять несуществующий мип уровень.
поставь glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
DevIL (OpenIL) & MipMap | 18 июля 2011 | 10:21 | #21 |
---|
KaronatoR
Смотри код функции loadCompressedTexture.
Смотри код функции loadCompressedTexture.
DevIL (OpenIL) & MipMap | 17 июля 2011 | 23:29 | #19 |
---|
KaronatoR
Попробуй еще сюда глянуть:
http://www.codesampler.com/oglsrc/oglsrc_4.htm#ogl_dds_texture_loader
Попробуй еще сюда глянуть:
http://www.codesampler.com/oglsrc/oglsrc_4.htm#ogl_dds_texture_loader
DevIL (OpenIL) & MipMap | 16 июля 2011 | 7:16 | #14 |
---|
рзмеры правильные?
Передача вектора в uniform переменную HLSL шейдера | 15 июля 2011 | 13:04 | #2 |
---|
Sheon
если lPosition корректная используй glUniform3fvARB вместо glUniform1fvARB для vec3.
Убогий GLSL. Используй ARB_uniform_buffer_object или GL_EXT_bindable_uniform не парься с размерностью констант.
если lPosition корректная используй glUniform3fvARB вместо glUniform1fvARB для vec3.
Убогий GLSL. Используй ARB_uniform_buffer_object или GL_EXT_bindable_uniform не парься с размерностью констант.
DevIL (OpenIL) & MipMap | 15 июля 2011 | 12:33 | #8 |
---|
KaronatoR
Попробуй так:
Попробуй так:
switch(format ) { case IL_DXT1: { format = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; }; case IL_DXT3: { format = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; }; case IL_DXT5: { format = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; }; break; }
DevIL (OpenIL) & MipMap | 15 июля 2011 | 12:26 | #7 |
---|
KaronatoR
> int format = ilGetInteger (IL_IMAGE_FORMAT);
Ошибка в неверном формате. Чем равен?
> int format = ilGetInteger (IL_IMAGE_FORMAT);
Ошибка в неверном формате. Чем равен?
Рендеринг одинаковых объектов, почему так падает fps при движении камеры? | 15 июля 2011 | 10:29 | #10 |
---|
Skyblade
>Сначала выводить ближние, потом дальние или наоборот?
как отсортировал так и выводи, с начала списка до конца, странный вопрос :)
>Сначала выводить ближние, потом дальние или наоборот?
как отсортировал так и выводи, с начала списка до конца, странный вопрос :)
Рендеринг одинаковых объектов, почему так падает fps при движении камеры? | 15 июля 2011 | 9:57 | #8 |
---|
graveman
Отсортируй меши от ближних к дальним и выводи. Если конечно там нет прозрачных.
Отсортируй меши от ближних к дальним и выводи. Если конечно там нет прозрачных.
Какой формат текстур выбрать? | 12 июля 2011 | 19:53 | #9 |
---|
Gladiator
png на этапе сборки моделей, ресурсов и т.д. DDS в релизе, остальные форматы не нужны.
png на этапе сборки моделей, ресурсов и т.д. DDS в релизе, остальные форматы не нужны.
Direct3D9: элементарные правила оптимизации (комментарии) | 6 июля 2011 | 12:23 | #3 |
---|
mrt
Предлагаю больше осветить данную тему в статье. Навскидку я думаю следует добавить:
1) RenderStates объединять в IDirect3DStateBlock9.
2) Не всегда нужно выводить от ближнего к дальнем, нужно учитывать прозрачность объектов.
3) Нужно упомянуть про много поточность в Direct3D9, а именно стараться вызывать все в одном потоке, и не использовать флаг создания устройства D3DCREATE_MULTITHREADED
Если еще что вспомню скажу.
Предлагаю больше осветить данную тему в статье. Навскидку я думаю следует добавить:
1) RenderStates объединять в IDirect3DStateBlock9.
2) Не всегда нужно выводить от ближнего к дальнем, нужно учитывать прозрачность объектов.
3) Нужно упомянуть про много поточность в Direct3D9, а именно стараться вызывать все в одном потоке, и не использовать флаг создания устройства D3DCREATE_MULTITHREADED
Если еще что вспомню скажу.
OpenIL / DevIL аналоги | 5 июля 2011 | 11:18 | #5 |
---|
KaronatoR
Я бы тебе посоветовал сделать загрузку png через libpng и DDS. Остальные форматы типа bmp,jpg,tga не нужны.
Я бы тебе посоветовал сделать загрузку png через libpng и DDS. Остальные форматы типа bmp,jpg,tga не нужны.
велосипеды шаблонных контейнеров (по заказу innuendo) | 3 июля 2011 | 23:57 | #111 |
---|
nes
А где assert на проверку выходы за диапазон? Итераторы конечно лучше добавить. Вообще, сохрани совместимость методов с std::vector, тут достаточно продублировать вызовы твоих методов.
Кстати, попробуй использовать malloc/realloc + placment new + memcpy(естественно для POD типов.) и сравни с тем что у тебя и c std::vector.
Так сделано в CGrowableArray из DXUT
А где assert на проверку выходы за диапазон? Итераторы конечно лучше добавить. Вообще, сохрани совместимость методов с std::vector, тут достаточно продублировать вызовы твоих методов.
Кстати, попробуй использовать malloc/realloc + placment new + memcpy(естественно для POD типов.) и сравни с тем что у тебя и c std::vector.
Так сделано в CGrowableArray из DXUT