Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отображение текстур в OpenGL посредством C# 
V
    Опции темы
Magnetic
Дата 28.11.2007, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



В OpenGL новичок, бОльшая часть программы написана методом "скопировать-вставить". Программа загружает двумерные текстуры из бмп файлов, рисует куб с этими текстурами. Файлы источников есть с маленьким разрешением и с большим разрешением. Если файлы-источники с низким разрешением (точнее 256x256), то кубик рисуется успешно. Независимо от разрешения файла-источника визуально текстура отображается одинаково нечетко. Нужно, чтобы текстура отображалась так же четко, как и файл-источник в программе просмотра изображений. В некоторых случаях текстура из файла с высоким разрешением просто не загружается и грань заполняется белым цветом.
Загрузка текстуры:
Код

private void LoadGLTexturePartial(Bitmap textureImage, int elementIndex, bool flip)
{
    if (flip)
    {
        textureImage.RotateFlip(RotateFlipType.Rotate180FlipX);
    }
    Rectangle rectangle = new Rectangle(0, 0, textureImage.Width, textureImage.Height);
    BitmapData bitmapData = textureImage.LockBits(rectangle, ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
    GL.glBindTexture(GL.GL_TEXTURE_2D, this.texture[elementIndex]);
    GL.glTexImage2D(GL.GL_TEXTURE_2D, 0, (int)GL.GL_RGB8, textureImage.Width, textureImage.Height, 0, GL.GL_BGR_EXT, GL.GL_UNSIGNED_byte, bitmapData.Scan0);
    GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, (int)GL.GL_LINEAR);
    GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, (int)GL.GL_LINEAR);
    if (bitmapData != null)
    {
        textureImage.UnlockBits(bitmapData);
    }
}


Рисование одной из граней:
Код

GL.glBindTexture(GL.GL_TEXTURE_2D, this.texture[0]);
GL.glBegin(GL.GL_QUADS);
GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-1.0f, -1.0f, 1.0f);    // Низ лево
GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(1.0f, -1.0f, 1.0f);    // Низ право
GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(1.0f, 1.0f, 1.0f);    // Верх право
GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-1.0f, 1.0f, 1.0f);    // Верх лево
GL.glEnd();

--------------------
Dude, where's my car?
PM MAIL   Вверх
arilou
Дата 28.11.2007, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

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



Magnetic, какие размеры текстур с высоким разрешением? возможно, проблема в этом. размеры должны быть степенями двойки.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Magnetic
Дата 28.11.2007, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



arilou, некоторые текстуры скорее не загружались по указанной вами причине. Спасибо! На текущей машине с разрешением текстур и файлами-источниками полное соответствие, хотя для этого код не менял вовсе. Еще проверю на той, где возникала проблема с качеством отображения.
--------------------
Dude, where's my car?
PM MAIL   Вверх
arilou
Дата 28.11.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

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



Magnetic, не за что. Удачи!


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




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


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

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