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