Texture OpenGl
Publié : lun. 22/nov./2010 10:16
Bonjour
J'essaye de transformer une image purebasic en une texture Opengl
j'ai essayé avec un tableau statique puis une zone memoire, mais j'obtiens toujours un joli quad tout blanc
J'ai fais le tour des forums PB mais je ne trouve pas grand chose.
Le sujet a pourtant du déja être evoqué.
Si vous avez un lien ou une idée, merci par avance
J'essaye de transformer une image purebasic en une texture Opengl
j'ai essayé avec un tableau statique puis une zone memoire, mais j'obtiens toujours un joli quad tout blanc
Code : Tout sélectionner
Procedure LoadGlTexture(NumTexture,Fichier.s)
Img=LoadImage(#PB_Any,Fichier)
Wi=ImageWidth(Img)
Hi=ImageHeight(Img)
; Dim OpenGlData.c(Wi*Hi,4)
; c = 0
;
; StartDrawing(ImageOutput(Img))
; For j = 0 To Hi - 1
; For i = 0 To Wi - 1
; Color = Point(i, j)
; OpenGLData(c,0) = Red(color)
; OpenGLData(c,1) = Green(color)
; OpenGLData(c,2) = Blue(color)
; OpenGlData(c,3)= Alpha(color)
; c+1
; Next i
; Next j
; StopDrawing()
*Mem=AllocateMemory(Wi*Hi*4)
StartDrawing(ImageOutput(Img))
P=0
For H=0 To Hi-1
For W=0 To Wi-1
Color = Point(W, H)
PokeB(*Mem+P,Red(color))
P+1
PokeB(*Mem+P,Green(color))
P+1
PokeB(*Mem+P,Blue(color))
P+1
PokeB(*Mem+P,Alpha(color))
P+1
Next W
Next H
StopDrawing()
glBindTexture_(#GL_TEXTURE_2D, TabTexture(NumTexture))
glTexParameterf_(#GL_TEXTURE_2D,#GL_TEXTURE_WRAP_S,#GL_CLAMP_TO_EDGE)
glTexParameterf_(#GL_TEXTURE_2D,#GL_TEXTURE_WRAP_T,#GL_CLAMP_TO_EDGE)
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, Wi, Hi, 0, #GL_RGBA, #GL_UNSIGNED_BYTE,*Mem)
FreeMemory(*Mem)
;Dim OpenGlData(0,0)
FreeImage(Img)
EndProcedure
Le sujet a pourtant du déja être evoqué.
Si vous avez un lien ou une idée, merci par avance