Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > BlitzMax > 3D-программирование

3D-программирование miniB3D, OpenGL

Ответ
 
Опции темы
Старый 05.05.2008, 14:35   #1
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,693 пользователей)
Плохо OpenGL текстуры. Объясните

Давно меня тут не было ... но все же вернулся, ибо есть проблема...

Точнее, проблема была. Решил. Спасибо NeHe. Но вот я не могу понять...
Смотрите мой код:

Global tex:TPixmap = LoadPixmap ("2.png")
Global Texture

glGenTextures(1, Int Ptr(Texture)) ;
glBindTexture(GL_TEXTURE_2D, Texture) ;

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) ;
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) ;
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, PixmapWidth(tex) , PixmapHeight(tex) , 0, GL_RGB, GL_UNSIGNED_BYTE, tex) ;
При юзании этого кода у нас текстура накладывается.... немного странно :




И вот код от NeHe :

glGenTextures(1, Int Ptr(Texture)) ;
glBindTexture(GL_TEXTURE_2D, Texture) ;


Global PointeurImg:Byte Ptr
Global TexWidth
global TexHeight


TexWidth = PixmapWidth(tex)
TexHeight = PixmapHeight(tex)

Local Checkimage:Byte[TexWidth, TexHeight, 4]

PointeurImg = PixmapPixelPtr(tex, 0, 0)
pp=0
For y=TexHeight-1 To 0 Step -1
For x=0 To TexWidth-1
Checkimage[y, x, 0] = PointeurImg[pp + 0]
Checkimage[y, x, 1] = PointeurImg[pp + 1]
Checkimage[y, x, 2] = PointeurImg[pp + 2]
Checkimage[y, x, 3] = 100
pp = pp + 3
Next
Next
tex = Null
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TexWidth, TexHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, Checkimage)


Почему мой код дает ТАКОЙ эффект, а код от NeHe работает нормально?
Может кто-нибудь объяснить доходчиво, что делает его код, и почему он робит, а мой нет ?
Не пойму...
(Offline)
 
Ответить с цитированием
Старый 05.05.2008, 14:42   #2
HolyDel
 
Регистрация: 25.09.2006
Сообщений: 6,030
Написано 1,469 полезных сообщений
(для 2,690 пользователей)
Ответ: OpenGL текстуры. Объясните

текстура грузится та же самая? подозреваю что пиксмап выравнян по 4 байта. попробуй грузить с флагом GL_RGBA заместо флага GL_RGB
(Offline)
 
Ответить с цитированием
Старый 05.05.2008, 14:46   #3
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,693 пользователей)
Ответ: OpenGL текстуры. Объясните

Global tex:TPixmap = LoadPixmap ("2.png")
Global Texture

glGenTextures(1, Int Ptr(Texture)) ;
glBindTexture(GL_TEXTURE_2D, Texture) ;


glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) ;
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) ;
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, PixmapWidth(tex) , PixmapHeight(tex) , 0, GL_RGBA, GL_UNSIGNED_BYTE, tex) ;
не помогло.
(Offline)
 
Ответить с цитированием
Старый 05.05.2008, 14:51   #4
HolyDel
 
Регистрация: 25.09.2006
Сообщений: 6,030
Написано 1,469 полезных сообщений
(для 2,690 пользователей)
Ответ: OpenGL текстуры. Объясните

скрин в студию. или ничего не изменилось? код рисования тоже желателен бы, особенно каким обращом задаются uv координаты.
(Offline)
 
Ответить с цитированием
Старый 05.05.2008, 16:43   #5
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,693 пользователей)
Ответ: OpenGL текстуры. Объясните

Ничего не изменилось...

тут код и все необходимое. так же ехе...

Последний раз редактировалось Данил, 30.11.2009 в 17:55.
(Offline)
 
Ответить с цитированием
Старый 05.05.2008, 16:55   #6
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,266
Написано 5,130 полезных сообщений
(для 14,834 пользователей)
Ответ: OpenGL текстуры. Объясните

У тебя ж вроде получалось раньше накладывать, только красный с синим каналы путались?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 05.05.2008, 18:18   #7
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,693 пользователей)
Ответ: OpenGL текстуры. Объясните

Я каналы настроил. Но этот метод я взял у NeHe. Решил попробовать сам сделать. Получилась какая-то хня...
(Offline)
 
Ответить с цитированием
Старый 05.05.2008, 19:29   #8
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: OpenGL текстуры. Объясните

сдается мне, что у тебя картинка не загрузилась... обрати внимание на эти строки
For y=TexHeight-1 To 0 Step -1
  For x=0 To TexWidth-1
   Checkimage[y, x, 0] = PointeurImg[pp + 0] 
   Checkimage[y, x, 1] = PointeurImg[pp + 1] 
   Checkimage[y, x, 2] = PointeurImg[pp + 2] 
   Checkimage[y, x, 3] = 100
   pp = pp + 3
   Next
Next
...
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TexWidth, TexHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, Checkimage)
...
видимо надо перевести пиксмап в другой вид (делается в цикле)
__________________
(Offline)
 
Ответить с цитированием
Старый 06.05.2008, 11:59   #9
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,693 пользователей)
Ответ: OpenGL текстуры. Объясните

Вроде бы да, NeHe какие-то преобразования делает с текстурой, и в итоге она нормально грузится. Но что это за преобразования такие, что они делают, и почему они так строго нужны
(Offline)
 
Ответить с цитированием
Старый 06.05.2008, 12:06   #10
breadman
Нуждающийся
 
Регистрация: 23.02.2007
Сообщений: 65
Написано 0 полезных сообщений
(для 0 пользователей)
Re: OpenGL текстуры. Объясните

Что мне кажется странным, дак это то что у него не получилось загрузить его методом. Вроде на Бмаксе опенгл упрощён, и либы бмп,пнг,жпг есть. Там просто обязан быть ламерский способ загрузки!
(Offline)
 
Ответить с цитированием
Старый 06.05.2008, 13:24   #11
HolyDel
 
Регистрация: 25.09.2006
Сообщений: 6,030
Написано 1,469 полезных сообщений
(для 2,690 пользователей)
Ответ: OpenGL текстуры. Объясните

For y=TexHeight-1 To 0 Step -1
  For x=0 To TexWidth-1
   Checkimage[y, x, 0] = PointeurImg[pp + 0] 
   Checkimage[y, x, 1] = PointeurImg[pp + 1] 
   Checkimage[y, x, 2] = PointeurImg[pp + 2] 
   Checkimage[y, x, 3] = 100
   pp = pp + 3
   Next
Next
ясно же... текстура из трехкомпонентной превращается в 4х компонентную (альфа - 100/255)
(Offline)
 
Ответить с цитированием
Старый 06.05.2008, 15:02   #12
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,693 пользователей)
Ответ: OpenGL текстуры. Объясните

Хм. Другой вопрос - это обязательно? Или же можно как-то не использоватьт эту функцию?

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, PixmapWidth(tex) , PixmapHeight(tex) , 0, GL_RGB, GL_UNSIGNED_BYTE, tex) ;
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
имя текстуры Spy4433 3D-программирование 3 01.09.2009 11:03
Объясните мне что такое Альфа канал Ganociy 3D-программирование 2 23.07.2009 18:56
Текстуры neoleg Болтовня 3 31.07.2007 21:13
объясните новичку hunt 3D Моделирование 15 16.07.2006 09:19


Часовой пояс GMT +1, время: 07:51.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com