Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|||||||||||
1 | |||||||||||
OpenGl под C#. Текстура отображается неверно20.06.2009, 15:18. Показов 6895. Ответов 8
Метки нет (Все метки)
Недавно разобрался как использовать Tao для взаимодействия OpenGL и C#, и вот возникла проблемка.
Написал прогу для привязки текстуры к квадрату. Все бы хорошо, проект рабочий, можете попробовать запустить (файл избражения текстуры копируйте в папку Наименование диска с проектом:\...\Название папки, содержащей проект(обычно совпадает с наименованием проекта)\bin\Debug\"Texture.bmp"(например)). Пример: E:\projectsWS2008\Texture_begin\bin\Debug\"Texture.bmp" Но 2 проблемы: 1) отображаются 4 одинаковых текстуры вместо одной:
Вот код программы:
Добавлено через 1 минуту 39 секунд Еще раз кину ссылки на текстуру: Результат программы:
0
|
20.06.2009, 15:18 | |
Ответы с готовыми решениями:
8
Текстура отображается неверно OpenGL + Win8, не отображается текстура Не отображается текстура SDL + OpenGL Не загружается текстура в OpenGL (OpenGL + Классы) |
12 / 12 / 3
Регистрация: 26.12.2009
Сообщений: 34
|
|
26.12.2009, 19:25 | 2 |
Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGBA, data.Width, data.Height, 0, Gl.GL_BGRA, Gl.GL_UNSIGNED_BYTE, data.Scan0);
от так вроде работает.
1
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
28.12.2009, 18:20 [ТС] | 3 |
А полный код можно? У меня так не работает И если есть, то проект прикрепите пожалуйста. Я пробовал, не помогло.
0
|
28.12.2009, 18:47 | 4 | |||||
1. Формат файла BMP - это не RGB, а BGR. Есть 2 варианта: первое, обменять байты отвечающие R и B вручную перед вызовом glTexImage2D. Второе, более простое, но не везде прописана константа, использовать константу GL_BGR или GL_BGR_EXT как показал skif3d. Только без Альфы, тк в данной текстуре такого канала нет.
2. Текстурные координаты неверно заданы, если хотите чтобы была 1 картинка а не 4. На сколько я помню....хотя сейчас гляну как правильно. Добавлено через 2 минуты
1
|
12 / 12 / 3
Регистрация: 26.12.2009
Сообщений: 34
|
||||||
28.12.2009, 20:51 | 5 | |||||
ну вообще-то я твой код подчистую содрал :)
только у меня текстура рисуется вверх тормашками :) проект прикрепить не могу (не из вредности - там до фига лишнего идет)
1
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
28.12.2009, 21:19 [ТС] | 6 |
Да дело в том, что это как раз главный баг: текстура постоянно инциализируется перевернутой. Это так по умолчанию. А как это обойти я не знаю. Т. е. я знаю! Но это не эффективный метод. Там ручками можно по байту инициализировать текстуру. Но хочется проще.
Добавлено через 1 минуту Ладно. я понял почти. Только почему их 4 все равно не пойму(( Добавлено через 33 секунды А ргб - рбг это я знал. Просто забыл. Ну все равно спасибо
0
|
28.12.2009, 22:51 | 7 |
Есть ещё один очень простой способ. Задать на самом примитиве перевёрнутые текстурные координаты. Только это подойдёт если все текстуры будут bmp тк только в нём строки растра сохранены в обратном порядке, на сколько я помню. С TGA форматом всё ровно будет работать без лишних переворотов. Кстати, проверь это. Пересохрани в тга формат и загрузи его, если в C# есть стандартные ф-ии для работы с тарга файлами.(я в С# не кую)
Лучше попробуй почитать док-цию или любую книгу по ОГЛу. Там всё прекрасно написано. Попробуй разобратся сам. Пойми каким образом текстура привязывается к примитиву. Если что конкретно не понятно, то попробую объяснить. Добавлено через 9 минут Наводящий вопрос: Сколько текстур разместится на интервале [-1, 1](текстурные коодинаты)?
1
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
28.12.2009, 23:11 [ТС] | 8 |
А ну да. От 0 до 1. Я понял. Спасибо. Я просто давно в OpenGL не сидел. У нас как-бы предмет закончился, ну а по собственным нуждам пока не было.
Не уверен, но роде Image.Load() это делает. И потом можно этот тга на битмапку натянуть и пересохранить в бмп. Хотя радует тот факт, что скоро будут новые версии tao. Так что всем, кто шарпит) это полезно.
1
|
12 / 12 / 3
Регистрация: 26.12.2009
Сообщений: 34
|
|
28.12.2009, 23:57 | 9 |
там даже форум давненько не обновлялся даже собираюсь на OpenTl переползать.
0
|
28.12.2009, 23:57 | |
28.12.2009, 23:57 | |
Помогаю со студенческими работами здесь
9
2d текстура в openGL Opengl, текстура Текстура OpenGL es 2 Текстура и OpenGL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |