so, und wieder ein problem:
Hier der code:
Code: Alles auswählen
;linkedlist:
Structure Blend_temp
xpos.l ;x - position des fleckes
ypos.l ;y - position des fleckes
sprite.l ;die nummer des sprites
EndStructure
NewList Blend_temp.Blend_temp()
Procedure G_2d_blend (p_stark.l,p_trans.l)
If CountList(Blend_temp()) => 1
Debug "fehler !"
ProcedureReturn 0
Else
EndIf
ResetList(Blend_temp())
While NextElement(Blend_temp())
sprite = Blend_temp()\sprite
t_xpos = Blend_temp()\xpos
t_ypos = Blend_temp()\ypos
TransformSprite3D(sprite, t_xpos -p_stark, t_ypos - p_stark, t_xpos + p_stark, t_ypos - p_stark, t_xpos + p_stark, t_ypos + p_stark, t_xpos - p_stark, t_ypos + p_stark)
DisplaySprite3D(sprite,0,0,p_trans)
Wend
ProcedureReturn 1
EndProcedure
;initialisierung:
If InitSprite() = 0
Debug "Fehler ! Konnte die direktx umgebung nicht erkennen !"
End
Else
EndIf
If InitSprite3D() = 0
Debug "Fehler ! Konnte die direct3d nicht finden !"
End
Else
EndIf
If OpenScreen(1024,768,32,"Blendtest ") = 0
Debug "Fehler ! Konnte den bildschirm nicht öffnen !"
End
Else
EndIf
Procedure.l G_2d_getblend (p_xauf.l,p_yauf.l,p_genau.l,p_sprite.l,p_rot.l,p_grun.l,p_blau.l)
If StartDrawing(ScreenOutput()) = 0
Debug "error !"
ProcedureReturn 0
Else
;lese den bildschirm aus:
xpos = 1
ypos = 1
p_point:
Farbe = Point(xpos, ypos)
rot = Red(Farbe)
If rot = p_rot
grun = Green(Farbe)
If grun = p_grun
blau = Blue(Farbe)
If blau = p_blau
;setze die pixelposition in das sprite
AddElement(Blend_temp())
Blend_temp()\xpos = xpos
Blend_temp()\ypos = ypos
Blend_temp()\sprite = p_sprite
Else
EndIf
Else
EndIf
Else
EndIf
;setze die leseposition ein stückchen weiter:
xpos + p_genau
If xpos > p_xauf
xpos = 1
ypos + p_genau
If ypos > p_yauf
;bende die routine
Goto p_point_end
Else
EndIf
Else
EndIf
Goto p_point
p_point_end:
ProcedureReturn 1
StopDrawing()
EndIf
EndProcedure
;erstelle blendsprite3d:
CreateSprite(1,32,32,#PB_Sprite_Texture)
;zeichne den kreis:
If StartDrawing(SpriteOutput(1)) = 0
Debug "Fehler !, konnte nicht auf das sprite zeichnen !"
End
Else
Circle(16,16,16,RGB(255,255,255))
StopDrawing()
EndIf
If CreateSprite3D(1,1) = 0
End
Else
EndIf
;zeichne einen roten markierungspunkt:
If StartDrawing(ScreenOutput()) = 0
Debug "Fehler !, konnte nicht auf den bildschirm zeichnen !"
End
Else
Box(20,20,100,10,RGB(255,0,0))
StopDrawing()
EndIf
nochi:
FlipBuffers()
Delay(300)
;lese den bildschirm aus:
G_2d_getblend(1023,767,3,1,255,0,0)
Delay(3000)
;zeige die sprite 3d's an:
Start3D()
G_2d_blend(10,10)
Stop3D()
FlipBuffers()
Delay(5000)
End
Beim ausführen dieses codes komm ich zurück zu den desktop, aber der ist dann ganz verzogen, sodass ich den pc neustarten muss

.
Wo hab ich denn fehler ?