Here is a small additon about fast pixmap manipulating and displaying. It is much faster for pixeloperations than the standard LockImage() or DrawPixmap stuff.
I think I have more time to explain it tomorrow.
I think I have more time to explain it tomorrow.
SetGraphicsDriver(GLMax2DDriver()) Graphics 800,600,0,-1 Local Pix:TPixmap = CreatePixmap(512,512,PF_RGBA8888) ClearPixels(Pix,$ffffffff) Local Image:TImage = LoadImage(Pix) Local Pix2:TPixmap 'SetClsColor (255,255,255) Local Mode:Int = 0 Local Radius:Int = 4 Local UpdateTime:Int = 0 Local fps:Int = 0 Local fpstime:Int = MilliSecs() Local fps2:Int = 0 Local angle:Float = 0 While Not KeyHit(KEY_EScape) Cls SetColor 255,0,0 DrawRect 0,0,516,516 SetColor 255,255,255 UpdateTime = MilliSecs() SetRotation Angle DrawImage Image,2,2 UpdateTime = MilliSecs()-UpdateTime If KeyHit(Key_Space) Then If Mode = 2 Then Mode = 0 Else Mode = 1 - Mode EndIf Angle = 0 SetHandle 0,0 EndIf If KeyHit(KEY_Enter) Then angle = 0 Mode = 2 SetHandle 256,256 EndIf If KeyHit(Key_Up) Then Radius:+1 If KeyHit(Key_Down) Then Radius:-1 If Radius < 1 Then Radius = 1 Local MX:Int = MouseX() Local MY:Int = MouseY() Local XX = Min(Max(2,MX),514) Local YY = Min(Max(2,MY),514) If Mode <> 2 Then If MouseDown(1) = True Then If MX > 2 And MX < 512 If MY > 2 And MY < 512 If Mode = 1 Then Pix = LockImage(Image) EndIf For Local Xi:Int = 0 To radius For Local yi:Int = 0 To radius Local X = Min(Max(2,MX+xi),512) Local Y = Min(Max(2,MY+yi),512) WritePixel Pix,X-2,Y-2,$ff000000 Next Next If Mode = 0 Then UploadPixToImg(Image,Pix,XX-2,YY-2,radius+2,radius+2) EndIf EndIf EndIf EndIf Else Angle:+0.2 EndIf SetRotation 0.0 DrawText "Mode : " + Mode,20,515 DrawText "Radius : " + Radius,20,535 DrawText "UpdateTime : " + UpdateTime,20,555 DrawText "FPS : " + FPS,532,20 DrawText "Space -> Change Mode (0 = Fast,1 = LockImage)",532,40 DrawText "Up and Down -> Change Radius",532,60 DrawText "Color : $" + Hex(ReadPixel(Pix,Min(Max(0,MouseX()-2),511),Min(Max(0,MouseY()-2),511))),20,575 fps2:+1 If MilliSecs()-fpstime >= 1000 Then fps = fps2 fpstime = MilliSecs() fps2 = 0 EndIf If KeyHit(KEY_F1) Then SavePixmapPNG(Pix,"test.png") Flip 0 Wend Function UploadPixtoImg(tex:TImage,Pixmap:TPixmap,x:Int = -1,y:Int=-1,w:Int=-1,h:Int=-1) Local ImgF:TGLImageFrame = TGLImageframe(tex.frame(0)) Local mip_level:Int = 0 If ImgF <> Null Then glBindtexture GL_TEXTURE_2D,ImgF.name glPixelStorei GL_UNPACK_ROW_LENGTH,pixmap.pitch/BytesPerPixel[pixmap.format] If X <> -1 And y <> -1 And w <> -1 And h <> -1 Then glTexSubImage2D GL_TEXTURE_2D,mip_level,X,y,W,H,GL_RGBA,GL_UNSIGNED_BYTE,pixmap.pixelptr(X,Y) Else glTexSubImage2D GL_TEXTURE_2D,mip_level,0,0,pixmap.width,pixmap.height,GL_RGBA,GL_UNSIGNED_BYTE,pixmap.pixels EndIf glPixelStorei GL_UNPACK_ROW_LENGTH,0 glBindtexture GL_TEXTURE_2D,0 EndIf DrawText " ",-20,-20 End Function