Показать сообщение отдельно
Старый 05.05.2008, 18:35   #1
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Плохо 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)
 
Ответить с цитированием