Hi !
don't understand 'Proger' (code archive) functions. Is there a way to adapt this code to produce only a textured line (with the image from the previous post) ?
Thanks for your help !!!
My try :
Strict
' TexturedPoly by Proger
'SetGraphicsDriver GLMax2DDriver()
Graphics 1024,780
Local Image:TImage = LoadImage("media/onde.png") ' 32x32 256x256 e.t.c
Local x1# = 100
Local y1# = 150
Local Largeur# = 32.00
MoveMouse GraphicsWidth()/2, GraphicsHeight()/2
Local xyuv:Float[] = [ ..
x1#, y1#, 0.0, 1.0, ..
Float (MouseX()), Float(MouseY()), 1.0, 1.0, ..
Float(MouseX()) , Float(MouseY()) + Largeur# , 1.0, 0.0, ..
x1#, y1#+Largeur# , 0.0 , 0.0 ]
While Not KeyDown (KEY_ESCAPE)
Cls
xyuv[4] = MouseX()
xyuv[5] = MouseY()
xyuv[8] = MouseX()
xyuv[9] = MouseY() + Largeur#
SetBlend AlphaBlend
DrawTexturedPoly Image , xyuv
Flip
Wend
Function DrawTexturedPoly( image:TImage,xyuv#[],frame=0, vertex = -1)
Local handle_x#, handle_y#
GetHandle handle_x#, handle_y#
Local origin_x#, origin_y#
GetOrigin origin_x#, origin_y#
Local D3DDriver:TD3D7Max2DDriver = TD3D7Max2DDriver(_max2dDriver)
Assert Image, "Image not found"
If D3DDriver Then
DrawTexturedPolyD3D ..
D3DDriver,..
TD3D7ImageFrame(image.Frame(frame)), ..
xyuv, handle_x, handle_y, origin_x,origin_y, vertex*4
Return
End If
Local OGLDriver:TGLMax2DDriver = TGLMax2DDriver(_max2dDriver)
If OGLDriver Then
DrawTexturedPolyOGL ..
OGLDriver,..
TGLImageFrame(image.Frame(frame)), ..
xyuv, handle_x, handle_y, origin_x,origin_y, vertex*4
Return
End If
End Function
Function DrawTexturedPolyD3D( Driver:TD3D7Max2DDriver, Frame:TD3D7ImageFrame,xyuv#[],handlex#,handley#,tx#,ty# , vertex)
If Driver.islost Return
If xyuv.length<6 Return
Local segs=xyuv.length/4
Local len_ = Len(xyuv)
If vertex > - 1 Then
segs = vertex / 4
len_ = vertex
End If
Local uv#[] = New Float[segs*6] ' 6
Local c:Int Ptr=Int Ptr(Float Ptr(uv))
Local ii:Int = 0
For Local i=0 Until len_ Step 4
Local x# = xyuv[i+0]+handlex
Local y# = xyuv[i+1]+handley
uv[ii+0] = x*Driver.ix+y*Driver.iy+tx
uv[ii+1] = x*Driver.jx+y*Driver.jy+ty
uv[ii+2] = 0 ' *********** THIS IS THE Z-COORDINATE
c[ii+3] = Driver.DrawColor
uv[ii+4] = xyuv[i+2]
uv[ii+5] = xyuv[i+3]
ii:+6
Next
Driver.SetActiveFrame Frame
Driver.device.DrawPrimitive(D3DPT_TRIANGLEFAN,D3DFVF_XYZ| D3DFVF_DIFFUSE | D3DFVF_TEX1,uv,segs,0)
End Function
Function DrawTexturedPolyOGL (Driver:TGLMax2DDriver, Frame:TGLImageFrame, xy#[],handle_x#,handle_y#,origin_x#,origin_y#, vertex)
Private
Global TmpImage:TImage
Public
If xy.length<6 Return
Local rot# = GetRotation()
Local tform_scale_x#, tform_scale_y#
GetScale tform_scale_x, tform_scale_y
Local s#=Sin(rot)
Local c#=Cos(rot)
Local ix= c*tform_scale_x
Local iy=-s*tform_scale_y
Local jx= s*tform_scale_x
Local jy= c*tform_scale_y
glBindTexture GL_TEXTURE_2D, Frame.name
glEnable GL_TEXTURE_2D
glBegin GL_POLYGON
For Local i=0 Until Len xy Step 4
If vertex > -1 And i >= vertex Then Exit
Local x#=xy[i+0]+handle_x
Local y#=xy[i+1]+handle_y
Local u#=xy[i+2]
Local v#=xy[i+3]
glTexCoord2f u,v
glVertex2f x*ix+y*iy+origin_x,x*jx+y*jy+origin_y
Next
glEnd
If Not tmpImage Then tmpImage = CreateImage(1,1)
DrawImage tmpImage, -100, - 100 ' Chtob zbit' flag texturi
End Function