Hi
I'm trying to convert the lib for b3dsdk but i get problem
with text ? anybody can help me ? The rest seem ok but the
text display strange stuff.
The lib topic :
http://www.blitzbasic.com/Community/posts.php?topic=75362
The library
An example :
I'm trying to convert the lib for b3dsdk but i get problem
with text ? anybody can help me ? The rest seem ok but the
text display strange stuff.
The lib topic :
http://www.blitzbasic.com/Community/posts.php?topic=75362
The library
'Used-Variables Global MouseX3D=0 Global MouseY3D=0 Global MouseHit3D=0 Global MousePit3D=0 Global MouseDown3D=0 Global MouseOver3D=0 Global MouseText3D:String="" 'Internal-Global-Variables Global DrawNFR:Int=255 'Native-Farbe-Rot Global DrawNFG:Int=255 'Native-Farbe-Grün Global DrawNFB:Int=255 'Native-Farbe-Blau Global DrawNFA:Float=1 'Native-Alpha-Angabe Global DrawTFR:Int=255 'Text3D-Farbe-Rot Global DrawTFG:Int=255 'Text3D-Farbe-Grün Global DrawTFB:Int=255 'Text3D-Farbe-Blau Global DrawTFA:Float=1 'Text3D-Alpha-Angabe Global DrawGFR:Int=255 'Grafik-Farbe-Rot Global DrawGFG:Int=255 'Grafik-Farbe-Grün Global DrawGFB:Int=255 'Grafik-Farbe-Blau Global DrawGFA:Float=1 'Grafik-Alpha-Angabe Global DrawSFont:Float=1 'Font-Größen-Skallierung Global DrawHFont:Float=1 'Font-Nur-Höhenskallierung Global DrawPFont:Float=0 'Font-Zeichenabstand-In-Pixel Global DrawIFont:Float=0 'Font-Kursiv-(Negativ/Positiv)-Grad Global DrawXScale:Float=1 'X-Skallierungsfaktor-Für-DrawPivot Global DrawYScale:Float=1 'Y-Skallierungsfaktor-Für-DrawPivot Global DrawXSize:Int=0 'X-Skallierungsfaktor-Für-MouseX3D Global DrawYSize:Int=0 'Y-Skallierungsfaktor-Für-MouseY3D Global DrawMouseHit:Int=0 'Für-Eigene-MouseHit-Berechnung Global DrawMousePit:String="" 'Für-Eigene-MousePit-Berechnung Global DrawNative:Int=0 'NativeInit3D-Initial-Handle Global DrawPivot:Int=0 'Camera-Pivot-Initial-Handle Global DrawBankUsed:Int=0 'Maximale-Bankbesetzung 'U|V-Font-Mapping-Constants Const DRAWUVSCALE:Float=1.0/512.0 Const DRAWVSIZE:Float=1.0/512.0*30 'Bank-Offset-Constants Const DRAWBANKKING:Int=0 Const DRAWBANKMESH:Int=4 Const DRAWBANKFACE:Int=8 Const DRAWBANKTEXTURE:Int=12 Const DRAWBANKXMAIN:Int=16 Const DRAWBANKYMAIN:Int=20 Const DRAWBANKXSIZE:Int=24 Const DRAWBANKYSIZE:Int=28 Const DRAWBANKU1MAP:Int=32 Const DRAWBANKV1MAP:Int=36 Const DRAWBANKU2MAP:Int=40 Const DRAWBANKV2MAP:Int=44 'Bank-Options-Constants Const DRAWBANKSIZE:Int=8192 Const DRAWBANKSTEP:Int=48 'Bank-Font-Offset-Constants Const DRAWBANKWIDTH:Int=DRAWBANKXSIZE Const DRAWBANKSPACE:Int=DRAWBANKYSIZE 'Bank-Creating-And-Setting-The-Size Global DrawBank:TBank=CreateBank(DRAWBANKSTEP+DRAWBANKSIZE*DRAWBANKSTEP) 'DrawInit3D(camera) Function DrawInit3D(FCamera) If FCamera=0 Then RuntimeError "Camera not found" DrawPivot=bbCreatePivot(FCamera) bbPositionEntity DrawPivot,0,0,bbGraphicsWidth()/20.0 bbMoveMouse bbGraphicsWidth()/2,bbGraphicsHeight()/2 Origin3D(bbGraphicsWidth(),bbGraphicsHeight()) 'Glow3D-Mesh/Face/Rexture-Erstellung PokeInt DrawBank,DRAWBANKKING,0 PokeInt DrawBank,DRAWBANKMESH,bbCreateMesh(DrawPivot) PokeInt DrawBank,DRAWBANKFACE,bbCreateSurface(PeekInt(DrawBank,DRAWBANKMESH)) PokeInt DrawBank,DRAWBANKTEXTURE,bbCreateTexture(2,2,2) bbWritePixel 0,0,$ffffffff,bbTextureBuffer(PeekInt(DrawBank,DRAWBANKTEXTURE)) bbWritePixel 1,0,$00ffffff,bbTextureBuffer(PeekInt(DrawBank,DRAWBANKTEXTURE)) bbWritePixel 0,1,$00ffffff,bbTextureBuffer(PeekInt(DrawBank,DRAWBANKTEXTURE)) bbWritePixel 1,1,$00ffffff,bbTextureBuffer(PeekInt(DrawBank,DRAWBANKTEXTURE)) 'Sonstige-Zuweisung/Berechnungen bbEntityTexture PeekInt(DrawBank,DRAWBANKMESH),PeekInt(DrawBank,DRAWBANKTEXTURE) bbEntityOrder PeekInt(DrawBank,DRAWBANKMESH),-1000-DRAWBANKSIZE-DRAWBANKSTEP bbTextureBlend PeekInt(DrawBank,DRAWBANKTEXTURE),2 bbScaleTexture PeekInt(DrawBank,DRAWBANKTEXTURE),2,2 bbEntityFX PeekInt(DrawBank,DRAWBANKMESH),1+2+8+16 End Function 'Origin3D( X-Size, Y-Size ) Function Origin3D(FDrawX:Float,FDrawY:Float) DrawXScale=bbGraphicsWidth()/FDrawX DrawYScale=bbGraphicsHeight()/FDrawY bbScaleEntity DrawPivot,DrawXScale/10.0,DrawYScale/10.0,1 DrawXSize=FDrawX DrawYSize=FDrawY End Function 'NativeInit3D( Draw-Mode, Draw-Blend ) Function NativeInit3D(FDrawMode:Int=2,FDrawBlend:Int=2) If DrawNative<>0 Then RuntimeError "Double Initialize NativeInit3D" 'Variablen-Vorberechnung If FDrawMode<0 Then FDrawMode=0 If FDrawMode>2 Then FDrawMode=4 If FDrawBlend<0 Then FDrawBlend=0 If FDrawBlend>5 Then FDrawBlend=5 'Neue-Bank-Position-Festlegen Local DrawBankPosition%=NFDP3D() 'DrawBank-Variablen-EINweisung PokeInt DrawBank,DrawBankPosition+DRAWBANKKING,+DrawBankPosition PokeInt DrawBank,DrawBankPosition+DRAWBANKMESH,bbCreateMesh(DrawPivot) PokeInt DrawBank,DrawBankPosition+DRAWBANKFACE,bbCreateSurface(PeekInt(DrawBank,DrawBankPosition+DRAWBANKMESH)) PokeInt DrawBank,DrawBankPosition+DRAWBANKTEXTURE,bbCreateTexture(2,2,FDrawMode) bbWritePixel 0,0,$ffffffff,bbTextureBuffer(PeekInt(DrawBank,DrawBankPosition+DRAWBANKTEXTURE)) bbWritePixel 1,0,$00ffffff,bbTextureBuffer(PeekInt(DrawBank,DrawBankPosition+DRAWBANKTEXTURE)) bbWritePixel 0,1,$00ffffff,bbTextureBuffer(PeekInt(DrawBank,DrawBankPosition+DRAWBANKTEXTURE)) bbWritePixel 1,1,$00ffffff,bbTextureBuffer(PeekInt(DrawBank,DrawBankPosition+DRAWBANKTEXTURE)) 'Sonstige-Zuweisung/Berechnungen bbEntityTexture PeekInt(DrawBank,DrawBankPosition+DRAWBANKMESH),PeekInt(DrawBank,DrawBankPosition+DRAWBANKTEXTURE) bbEntityOrder PeekInt(DrawBank,DrawBankPosition+DRAWBANKMESH),-1000-DrawBankPosition/DRAWBANKSTEP bbTextureBlend PeekInt(DrawBank,DrawBankPosition+DRAWBANKTEXTURE),FDrawBlend bbScaleTexture PeekInt(DrawBank,DrawBankPosition+DRAWBANKTEXTURE),2,2 bbEntityFX PeekInt(DrawBank,DrawBankPosition+DRAWBANKMESH),1+2+8+16 DrawNative=PeekInt(DrawBank,DrawBankPosition+DRAWBANKFACE) End Function Function NFDP3D() 'Nächst-Freie-Bank-Vorgabe Local DrawNFDP:Int=DRAWBANKSTEP 'Nächst-Freie-Bank-Suchen Repeat If PeekInt(DrawBank,DrawNFDP+DRAWBANKKING)=0 Then Exit DrawNFDP=DrawNFDP+DRAWBANKSTEP If DrawNFDP>DRAWBANKSIZE Then RuntimeError "DrawBank is to small" End If Forever 'Bank-Benutzungseingrenzung-Festlegen If DrawNFDP>DrawBankUsed Then DrawBankUsed=DrawNFDP Return DrawNFDP End Function 'Clear3D( ) Function Clear3D() If MouseText3D="" Then DrawMousePit="" Else MouseText3D="" End If MouseX3D=bbMouseX()/DrawXScale-(DrawXSize/2) MouseY3D=(DrawYSize/2)-bbMouseY()/DrawYScale bbClearSurface PeekInt(DrawBank,DRAWBANKFACE),True,True For Local DrawLoop:Int=0 To DrawBankUsed Step DRAWBANKSTEP If PeekInt(DrawBank,DrawLoop+DRAWBANKKING)<>0 bbClearSurface PeekInt(DrawBank,DrawLoop+DRAWBANKFACE),True,True End If Next End Function 'ColorN3D( Red, Green, Blue, Alpha ) Function ColorN3D(FDrawFR:Byte=255,FDrawFG:Byte=255,FDrawFB:Byte=255,FDrawFA:Float=1) DrawNFR=FDrawFR DrawNFG=FDrawFG DrawNFB=FDrawFB DrawNFA=FDrawFA End Function 'ColorT3D( Red, Green, Blue, Alpha ) Function ColorT3D(FDrawFR:Byte=255,FDrawFG:Byte=255,FDrawFB:Byte=255,FDrawFA:Float=1) DrawTFR=FDrawFR DrawTFG=FDrawFG DrawTFB=FDrawFB DrawTFA=FDrawFA End Function 'ColorG3D( Red, Green, Blue, Alpha ) Function ColorG3D(FDrawFR:Byte=255,FDrawFG:Byte=255,FDrawFB:Byte=255,FDrawFA:Float=1) DrawGFR=FDrawFR DrawGFG=FDrawFG DrawGFB=FDrawFB DrawGFA=FDrawFA End Function 'Plot3D ( X-Center, Y-Center, Drawing-Size ) Function Plot3D(FDrawX:Int,FDrawY:Int,FDrawSize:Int=2) If DrawNative=0 Then RuntimeError "NativeInit3D() not set" If FDrawSize=0 Then FDrawSize=2 'Vertex/Ploygon-Zuweisung/Berechnungen Local DrawV0=bbAddVertex(DrawNative,FDrawX-FDrawSize,FDrawY+FDrawSize,0, 1.5,1.5) Local DrawV1=bbAddVertex(DrawNative,FDrawX+FDrawSize,FDrawY+FDrawSize,0, 3.5,1.5) Local DrawV2=bbAddVertex(DrawNative,FDrawX+FDrawSize,FDrawY-FDrawSize,0, 3.5,3.5) Local DrawV3=bbAddVertex(DrawNative,FDrawX-FDrawSize,FDrawY-FDrawSize,0, 1.5,3.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV2,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV3,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawV0,DrawV1,DrawV2) bbAddTriangle(DrawNative,DrawV2,DrawV3,DrawV0) End Function 'Line3D ( X-Start, Y-Start, X-End, Y-End, Drawing-Size ) Function Line3D(FDrawX1:Int,FDrawY1:Int,FDrawX2:Int,FDrawY2:Int,FDrawSize:Int=2) If DrawNative=0 Then RuntimeError "NativeInit3D() not set" If FDrawX1<>FDrawX2 Or FDrawY1<>FDrawY2 Then 'Variablen-Vorberechnung If FDrawSize=0 Then FDrawSize=2 bbTFormNormal FDrawX2-FDrawX1,FDrawY2-FDrawY1,0,0,0 Local DrawXTForm:Float=bbTFormedX()*FDrawSize Local DrawYTForm:Float=bbTFormedY()*FDrawSize 'Vertex/Ploygon-Zuweisung/Berechnungen Local DrawV0=bbAddVertex(DrawNative,FDrawX1+DrawYTForm,FDrawY1-DrawXTForm,0, 1.5,0.5) Local DrawV1=bbAddVertex(DrawNative,FDrawX1-DrawYTForm,FDrawY1+DrawXTForm,0, 3.5,0.5) Local DrawV2=bbAddVertex(DrawNative,FDrawX2-DrawYTForm,FDrawY2+DrawXTForm,0, 3.5,0.5) Local DrawV3=bbAddVertex(DrawNative,FDrawX2+DrawYTForm,FDrawY2-DrawXTForm,0, 1.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV2,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV3,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawV0,DrawV1,DrawV2) bbAddTriangle(DrawNative,DrawV2,DrawV3,DrawV0) End If End Function 'Rect3D( X-Center, Y-Center, X-Size, Y-Size, Drawing-Mode, Border-Size ) Function Rect3D(FDrawX:Int,FDrawY:Int,FDrawXS:Int,FDrawYS:Int,FDrawFill:Int=1,FDrawSize:Int=0) ' Filax hack to get boxes FDrawXS=FDrawXS/2 FDrawYS=FDrawYS/2 FDrawX=FDrawX+FDrawXS FDrawY=FDrawY-FDrawYS If DrawNative=0 Then RuntimeError "NativeInit3D() not set" 'Variablen-Vorberechnung FDrawXS=Abs(FDrawXS) FDrawYS=Abs(FDrawYS) Local DrawV0:Int Local DrawV1:Int Local DrawV2:Int Local DrawV3:Int Local DrawV4:Int Local DrawV5:Int Local DrawV6:Int Local DrawV7:Int 'Rahmen-Allein-Modus If FDrawFill=0 Then If FDrawSize=0 Then FDrawSize=2 'Vertex/Ploygon-Zuweisung/Berechnungen DrawV0=bbAddVertex(DrawNative,FDrawX-FDrawXS-FDrawSize,FDrawY+FDrawYS+FDrawSize,0, 1.5,0.5) DrawV1=bbAddVertex(DrawNative,FDrawX+FDrawXS+FDrawSize,FDrawY+FDrawYS+FDrawSize,0, 1.5,0.5) DrawV2=bbAddVertex(DrawNative,FDrawX+FDrawXS+FDrawSize,FDrawY-FDrawYS-FDrawSize,0, 1.5,0.5) DrawV3=bbAddVertex(DrawNative,FDrawX-FDrawXS-FDrawSize,FDrawY-FDrawYS-FDrawSize,0, 1.5,0.5) DrawV4=bbAddVertex(DrawNative,FDrawX-FDrawXS+FDrawSize,FDrawY+FDrawYS-FDrawSize,0, 3.5,0.5) DrawV5=bbAddVertex(DrawNative,FDrawX+FDrawXS-FDrawSize,FDrawY+FDrawYS-FDrawSize,0, 3.5,0.5) DrawV6=bbAddVertex(DrawNative,FDrawX+FDrawXS-FDrawSize,FDrawY-FDrawYS+FDrawSize,0, 3.5,0.5) DrawV7=bbAddVertex(DrawNative,FDrawX-FDrawXS+FDrawSize,FDrawY-FDrawYS+FDrawSize,0, 3.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV2,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV3,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV4,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV5,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV6,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV7,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawV0,DrawV1,DrawV5) bbAddTriangle(DrawNative,DrawV5,DrawV4,DrawV0) bbAddTriangle(DrawNative,DrawV1,DrawV2,DrawV6) bbAddTriangle(DrawNative,DrawV6,DrawV5,DrawV1) bbAddTriangle(DrawNative,DrawV2,DrawV3,DrawV7) bbAddTriangle(DrawNative,DrawV7,DrawV6,DrawV2) bbAddTriangle(DrawNative,DrawV3,DrawV0,DrawV4) bbAddTriangle(DrawNative,DrawV4,DrawV7,DrawV3) Else ' Gefüllt-Allein-Modus | Vertex/Ploygon-Zuweisung/Berechnungen DrawV0:Int=bbAddVertex(DrawNative,FDrawX-FDrawXS,FDrawY+FDrawYS,0, 0.5,0.5) DrawV1:Int=bbAddVertex(DrawNative,FDrawX+FDrawXS,FDrawY+FDrawYS,0, 0.5,0.5) DrawV2:Int=bbAddVertex(DrawNative,FDrawX+FDrawXS,FDrawY-FDrawYS,0, 0.5,0.5) DrawV3:Int=bbAddVertex(DrawNative,FDrawX-FDrawXS,FDrawY-FDrawYS,0, 0.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV2,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV3,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawV0,DrawV1,DrawV2) bbAddTriangle(DrawNative,DrawV2,DrawV3,DrawV0) 'Halbrahmen-Hinzufügen If FDrawSize>0 Then 'Vertex/Ploygon-Zuweisung/Berechnungen DrawV4:Int=bbAddVertex(DrawNative,FDrawX-FDrawXS-FDrawSize,FDrawY+FDrawYS+FDrawSize,0, 1.5,0.5) DrawV5:Int=bbAddVertex(DrawNative,FDrawX+FDrawXS+FDrawSize,FDrawY+FDrawYS+FDrawSize,0, 1.5,0.5) DrawV6:Int=bbAddVertex(DrawNative,FDrawX+FDrawXS+FDrawSize,FDrawY-FDrawYS-FDrawSize,0, 1.5,0.5) DrawV7:Int=bbAddVertex(DrawNative,FDrawX-FDrawXS-FDrawSize,FDrawY-FDrawYS-FDrawSize,0, 1.5,0.5) bbVertexColor DrawNative,DrawV4,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV5,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV6,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV7,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawV4,DrawV5,DrawV1) bbAddTriangle(DrawNative,DrawV1,DrawV0,DrawV4) bbAddTriangle(DrawNative,DrawV5,DrawV6,DrawV2) bbAddTriangle(DrawNative,DrawV2,DrawV1,DrawV5) bbAddTriangle(DrawNative,DrawV6,DrawV7,DrawV3) bbAddTriangle(DrawNative,DrawV3,DrawV2,DrawV6) bbAddTriangle(DrawNative,DrawV7,DrawV4,DrawV0) bbAddTriangle(DrawNative,DrawV0,DrawV3,DrawV7) End If End If End Function 'Glow3D( X-Center, Y-Center, X-First-Vertex, Y-First-Vertex, X-Second-Vertex, Y-Second-Vertex ) Function Glow3D(FDrawX0:Float,FDrawY0:Float,FDrawX1:Float,FDrawY1:Float,FDrawX2:Float,FDrawY2:Float,FTextOver:String) 'Variablen-Vorberechnung Local DrawRX3:Float=FDrawX0-FDrawX1+FDrawX2 Local DrawRY3:Float=FDrawY0-FDrawY1+FDrawY2 Local DrawGlowFace=PeekInt(DrawBank,DRAWBANKFACE) MouseOver3D=0 MouseDown3D=0 MouseHit3D=0 MousePit3D=0 'Quadkollision-Berechnen/Glow3D-Anwenden If (FDrawY1-FDrawY0)*(MouseX3D-FDrawX1)-(FDrawX1-FDrawX0)*(MouseY3D-FDrawY1)>0 Then If (FDrawY2-FDrawY1)*(MouseX3D-FDrawX2)-(FDrawX2-FDrawX1)*(MouseY3D-FDrawY2)>0 Then If (DrawRY3-FDrawY2)*(MouseX3D-DrawRX3)-(DrawRX3-FDrawX2)*(MouseY3D-DrawRY3)>0 Then If (FDrawY0-DrawRY3)*(MouseX3D-FDrawX0)-(FDrawX0-DrawRX3)*(MouseY3D-FDrawY0)>0 Then ' Vertex/Ploygon-Zuweisung/Berechnungen Local DrawV0=bbAddVertex(DrawGlowFace,FDrawX0+(FDrawX0-FDrawX2)/8,FDrawY0+(FDrawY0-FDrawY2)/8,0, 1.5,1.5) Local DrawV1=bbAddVertex(DrawGlowFace,FDrawX1+(FDrawX1-DrawRX3)/8,FDrawY1+(FDrawY1-DrawRY3)/8,0, 3.5,1.5) Local DrawV2=bbAddVertex(DrawGlowFace,FDrawX2+(FDrawX2-FDrawX0)/8,FDrawY2+(FDrawY2-FDrawY0)/8,0, 3.5,3.5) Local DrawV3=bbAddVertex(DrawGlowFace,DrawRX3+(DrawRX3-FDrawX1)/8,DrawRY3+(DrawRY3-FDrawY1)/8,0, 1.5,3.5) bbVertexColor DrawGlowFace,DrawV0,255,255,255,.5 bbVertexColor DrawGlowFace,DrawV1,255,255,255,.5 bbVertexColor DrawGlowFace,DrawV2,255,255,255,.5 bbVertexColor DrawGlowFace,DrawV3,255,255,255,.5 bbAddTriangle(DrawGlowFace,DrawV0,DrawV1,DrawV2) bbAddTriangle(DrawGlowFace,DrawV2,DrawV3,DrawV0) 'Globale-Maus-Variablen-Berechnung MouseDown3D=bbMouseDown(1)+(bbMouseDown(2)*2)+(bbMouseDown(3)*4) If DrawMouseHit=0 Then MouseHit3D=MouseDown3D If DrawMousePit<>FTextOver Then MousePit3D=1 DrawMouseHit=MouseDown3D DrawMousePit=FTextOver MouseText3D=FTextOver MouseOver3D=1 Return True End If End If End If End If End Function 'SetFont3D( Font-Size, Font-Height, Font-Padding, Italic-Font) Function SetFont3D(FDrawSFont:Float=1,FDrawHFont:Float=1,FDrawPFont:Float=1,FDrawIFont:Float=0) DrawSFont=FDrawSFont DrawHFont=FDrawHFont DrawPFont=FDrawPFont-1 DrawIFont=FDrawIFont End Function 'LoadFont3D( Texture-Name, Texture-Mode, Texture-Blend ) Function LoadFont3D(FDrawFile$,FDrawMode%=2,FDrawBlend%=2) If FileType(FDrawFile)<>1 Then RuntimeError FDrawFile+" not found" 'Variablen-Vorberechnung If FDrawMode<0 Then FDrawMode=0 If FDrawMode>2 Then FDrawMode=4 If FDrawBlend<0 Then FDrawBlend=0 If FDrawBlend>5 Then FDrawBlend=5 'Neue-Bank-Position-Festlegen Local DrawBankPosition%=NFDP3D() 'DrawBank-Variablen-EINweisung PokeInt DrawBank,DrawBankPosition+DRAWBANKKING,DrawBankPosition PokeInt DrawBank,DrawBankPosition+DRAWBANKMESH,bbCreateMesh(DrawPivot) PokeInt DrawBank,DrawBankPosition+DRAWBANKFACE,bbCreateSurface(PeekInt(DrawBank,DrawBankPosition+DRAWBANKMESH)) PokeInt DrawBank,DrawBankPosition+DRAWBANKTEXTURE,bbLoadTexture(FDrawFile,FDrawMode) PokeInt DrawBank,DrawBankPosition+DRAWBANKXMAIN,bbTextureWidth(PeekInt(DrawBank,DrawBankPosition+DRAWBANKTEXTURE))/2.0 PokeInt DrawBank,DrawBankPosition+DRAWBANKYMAIN,bbTextureHeight(PeekInt(DrawBank,DrawBankPosition+DRAWBANKTEXTURE))/2.0 PokeInt DrawBank,DrawBankPosition+DRAWBANKWIDTH,(bbReadPixel(0,0,bbTextureBuffer(PeekInt(DrawBank,DrawBankPosition+DRAWBANKTEXTURE))) And $FF0000)/$10000 PokeInt DrawBank,DrawBankPosition+DRAWBANKSPACE,(bbReadPixel(0,0,bbTextureBuffer(PeekInt(DrawBank,DrawBankPosition+DRAWBANKTEXTURE))) And $FF00)/$100 PokeFloat DrawBank,DrawBankPosition+DRAWBANKU1MAP,0+(0.25/PeekInt(DrawBank,DrawBankPosition+DRAWBANKXMAIN)) PokeFloat DrawBank,DrawBankPosition+DRAWBANKV1MAP,0+(0.25/PeekInt(DrawBank,DrawBankPosition+DRAWBANKYMAIN)) PokeFloat DrawBank,DrawBankPosition+DRAWBANKU2MAP,1-(0.25/PeekInt(DrawBank,DrawBankPosition+DRAWBANKXMAIN)) PokeFloat DrawBank,DrawBankPosition+DRAWBANKV2MAP,1-(0.25/PeekInt(DrawBank,DrawBankPosition+DRAWBANKYMAIN)) 'Sonstige-Zuweisung/Berechnungen bbEntityTexture PeekInt(DrawBank,DrawBankPosition+DRAWBANKMESH),PeekInt(DrawBank,DrawBankPosition+DRAWBANKTEXTURE) bbEntityOrder PeekInt(DrawBank,DrawBankPosition+DRAWBANKMESH),-1000-DrawBankPosition/DRAWBANKSTEP bbTextureBlend PeekInt(DrawBank,DrawBankPosition+DRAWBANKTEXTURE),FDrawBlend bbEntityFX PeekInt(DrawBank,DrawBankPosition+DRAWBANKMESH),1+2+8+16 'Variablen-Ausstiegsvorbereitung Return DrawBankPosition End Function 'Text3D( Handle, X-Center-Position, Y-Center-Position, Text-String, Text-Align, Button, Rotation ) Function Text3D(FDrawHandle%,FDrawX:Float,FDrawY:Float,FDrawString:String,FDrawAlign:Byte=0,FDrawButton:Byte=0,FDrawRotation:Float=0) If FDrawHandle=0 Then RuntimeError "LoadFont3D() not set" 'DrawBank-Variablen-AUSweisung Local LDrawFace%=PeekInt(DrawBank,FDrawHandle+DRAWBANKFACE) Local LDrawFontWidth%=PeekInt(DrawBank,FDrawHandle+DRAWBANKWIDTH) Local LDrawFontSpace%=PeekInt(DrawBank,FDrawHandle+DRAWBANKSPACE) 'Variablen-Vorberechnung Local DrawLen%=Len(FDrawString) Local DrawXVector#=Cos(-FDrawRotation)*DrawSFont/LDrawFontSpace*16 Local DrawYVector#=Sin(-FDrawRotation)*DrawSFont/LDrawFontSpace*16 Local DrawDiff#=(LDrawFontWidth-LDrawFontSpace)/2.0 Local DrawXSpeed#=DrawXVector*LDrawFontSpace+DrawPFont*DrawXVector*LDrawFontSpace Local DrawYSpeed#=DrawYVector*LDrawFontSpace+DrawPFont*DrawYVector*LDrawFontSpace Local DrawXAlign#=(FDrawAlign*DrawXSpeed*DrawLen*.5)+(DrawDiff-DrawPFont/2)*DrawXVector Local DrawYAlign#=(FDrawAlign*DrawYSpeed*DrawLen*.5)+(DrawDiff-DrawPFont/2)*DrawYVector Local DrawXPos1#=FDrawX-DrawYVector*15*DrawHFont-DrawXAlign Local DrawYPos1#=FDrawY+DrawXVector*15*DrawHFont-DrawYAlign Local DrawXPos4#=FDrawX+DrawYVector*15*DrawHFont-DrawXAlign Local DrawYPos4#=FDrawY-DrawXVector*15*DrawHFont-DrawYAlign Local DrawXPos2#=DrawXPos1+LDrawFontWidth*DrawXVector Local DrawYPos2#=DrawYPos1+LDrawFontWidth*DrawYVector Local DrawXPos3#=DrawXPos4+LDrawFontWidth*DrawXVector Local DrawYPos3#=DrawYPos4+LDrawFontWidth*DrawYVector Local DrawUStep#=DRAWUVSCALE*LDrawFontWidth Local DrawXTemp#=DrawXPos1 Local DrawYTemp#=DrawYPos1 'String-Durchgehend-Zeichnen For Local DrawLoop:Int=1 To DrawLen Local DrawAsc=Asc(Mid$(FDrawString,DrawLoop,1)) Local DrawUMap#=DRAWUVSCALE+(DrawAsc*32 Mod 512)*DRAWUVSCALE Local DrawVMap#=DRAWUVSCALE+DrawAsc/16*32*DRAWUVSCALE Local DrawXI#=DrawXVector*DrawIFont*DrawHFont Local DrawYI#=DrawYVector*DrawIFont*DrawHFont 'Vertex/Ploygon-Zuweisung/Berechnungen Local DrawV0=bbAddVertex(LDrawFace,DrawXPos1+DrawXI,DrawYPos1+DrawYI,0, DrawUMap,DrawVMap) Local DrawV1=bbAddVertex(LDrawFace,DrawXPos2+DrawXI,DrawYPos2+DrawYI,0, DrawUMap+DrawUStep,DrawVMap) Local DrawV2=bbAddVertex(LDrawFace,DrawXPos3-DrawXI,DrawYPos3-DrawYI,0, DrawUMap+DrawUStep,DrawVMap+DRAWVSIZE) Local DrawV3=bbAddVertex(LDrawFace,DrawXPos4-DrawXI,DrawYPos4-DrawYI,0, DrawUMap,DrawVMap+DRAWVSIZE) bbVertexColor LDrawFace,DrawV0,DrawTFR,DrawTFG,DrawTFB,DrawTFA bbVertexColor LDrawFace,DrawV1,DrawTFR,DrawTFG,DrawTFB,DrawTFA bbVertexColor LDrawFace,DrawV2,DrawTFR,DrawTFG,DrawTFB,DrawTFA bbVertexColor LDrawFace,DrawV3,DrawTFR,DrawTFG,DrawTFB,DrawTFA bbAddTriangle LDrawFace,DrawV0,DrawV1,DrawV2 bbAddTriangle LDrawFace,DrawV2,DrawV3,DrawV0 'Positionierung-Für-Nächstes-Zeichen DrawXPos1=DrawXPos1+DrawXSpeed DrawYPos1=DrawYPos1+DrawYSpeed DrawXPos2=DrawXPos2+DrawXSpeed DrawYPos2=DrawYPos2+DrawYSpeed DrawXPos3=DrawXPos3+DrawXSpeed DrawYPos3=DrawYPos3+DrawYSpeed DrawXPos4=DrawXPos4+DrawXSpeed DrawYPos4=DrawYPos4+DrawYSpeed Next If FDrawButton Then Glow3D(DrawXTemp,DrawYTemp,DrawXPos2-DrawXSpeed,DrawYPos2-DrawYSpeed,DrawXPos3-DrawXSpeed,DrawYPos3-DrawYSpeed,FDrawString) End Function 'Oval3D( X-Center, Y-Center, X-Size, Y-Size, Drawing-Mode, Border-Size ) Function Oval3D(FDrawX:Int,FDrawY:Int,FDrawXS:Int,FDrawYS:Int,FDrawFill:Int=1,FDrawSize:Int=0) If DrawNative=0 Then RuntimeError "NativeInit3D() not set" 'Variablen-Vorberechnung FDrawXS=Abs(FDrawXS) FDrawYS=Abs(FDrawYS) Local DrawSequences:Float=4+Int((FDrawXS+FDrawYS)/60) If DrawSequences>12 Then DrawSequences=12 Local DrawAngle:Float=90.0/DrawSequences 'Rahmen-Allein-Modus If FDrawFill=0 Then If FDrawSize=0 Then FDrawSize=2 Local DrawXOutside:Float=FDrawXS+FDrawSize Local DrawYOutside:Float=FDrawYS+FDrawSize Local DrawXInside:Float=FDrawXS-FDrawSize Local DrawYInside:Float=FDrawYS-FDrawSize Local DrawV0:Int Local DrawV1:Int Local DrawV2:Int Local DrawV3:Int Local DrawXPos1:Float Local DrawYPos1:Float Local DrawXPos2:Float Local DrawYPos2:Float Local DrawLoop:Int For DrawLoop=1 To DrawSequences 'Vertex/Ploygon-Zuweisung/Berechnungen DrawXPos1=Cos(DrawLoop*DrawAngle) DrawYPos1=Sin(DrawLoop*DrawAngle) DrawXPos2=Cos(DrawLoop*DrawAngle-DrawAngle) DrawYPos2=Sin(DrawLoop*DrawAngle-DrawAngle) 'Oval3D-Quartal-1/4-Mirror DrawV0=bbAddVertex(DrawNative,FDrawX+DrawXPos1*DrawXOutside,FDrawY+DrawYPos1*DrawYOutside,0, 1.5,0.5) DrawV1=bbAddVertex(DrawNative,FDrawX+DrawXPos2*DrawXOutside,FDrawY+DrawYPos2*DrawYOutside,0, 1.5,0.5) DrawV2=bbAddVertex(DrawNative,FDrawX+DrawXPos2*DrawXInside,FDrawY+DrawYPos2*DrawYInside,0, 3.5,0.5) DrawV3=bbAddVertex(DrawNative,FDrawX+DrawXPos1*DrawXInside,FDrawY+DrawYPos1*DrawYInside,0, 3.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV2,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV3,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawV0,DrawV1,DrawV2) bbAddTriangle(DrawNative,DrawV2,DrawV3,DrawV0) 'Oval3D-Quartal-2/4-Mirror DrawV0=bbAddVertex(DrawNative,FDrawX+DrawXPos1*DrawXOutside,FDrawY-DrawYPos1*DrawYOutside,0, 1.5,0.5) DrawV1=bbAddVertex(DrawNative,FDrawX+DrawXPos2*DrawXOutside,FDrawY-DrawYPos2*DrawYOutside,0, 1.5,0.5) DrawV2=bbAddVertex(DrawNative,FDrawX+DrawXPos2*DrawXInside,FDrawY-DrawYPos2*DrawYInside,0, 3.5,0.5) DrawV3=bbAddVertex(DrawNative,FDrawX+DrawXPos1*DrawXInside,FDrawY-DrawYPos1*DrawYInside,0, 3.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV2,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV3,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawV0,DrawV1,DrawV2) bbAddTriangle(DrawNative,DrawV2,DrawV3,DrawV0) 'Oval3D-Quartal-3/4-Mirror DrawV0=bbAddVertex(DrawNative,FDrawX-DrawXPos1*DrawXOutside,FDrawY-DrawYPos1*DrawYOutside,0, 1.5,0.5) DrawV1=bbAddVertex(DrawNative,FDrawX-DrawXPos2*DrawXOutside,FDrawY-DrawYPos2*DrawYOutside,0, 1.5,0.5) DrawV2=bbAddVertex(DrawNative,FDrawX-DrawXPos2*DrawXInside,FDrawY-DrawYPos2*DrawYInside,0, 3.5,0.5) DrawV3=bbAddVertex(DrawNative,FDrawX-DrawXPos1*DrawXInside,FDrawY-DrawYPos1*DrawYInside,0, 3.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV2,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV3,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawV0,DrawV1,DrawV2) bbAddTriangle(DrawNative,DrawV2,DrawV3,DrawV0) 'Oval3D-Quartal-4/4-Mirror DrawV0=bbAddVertex(DrawNative,FDrawX-DrawXPos1*DrawXOutside,FDrawY+DrawYPos1*DrawYOutside,0, 1.5,0.5) DrawV1=bbAddVertex(DrawNative,FDrawX-DrawXPos2*DrawXOutside,FDrawY+DrawYPos2*DrawYOutside,0, 1.5,0.5) DrawV2=bbAddVertex(DrawNative,FDrawX-DrawXPos2*DrawXInside,FDrawY+DrawYPos2*DrawYInside,0, 3.5,0.5) DrawV3=bbAddVertex(DrawNative,FDrawX-DrawXPos1*DrawXInside,FDrawY+DrawYPos1*DrawYInside,0, 3.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV2,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV3,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawV0,DrawV1,DrawV2) bbAddTriangle(DrawNative,DrawV2,DrawV3,DrawV0) Next Else 'Mittelpunkt-Vertex-Zuweisung/Berechnungen Local DrawVC:Int=bbAddVertex(DrawNative,FDrawX,FDrawY,0, 0.5,0.5) bbVertexColor DrawNative,DrawVC,DrawNFR,DrawNFG,DrawNFB,DrawNFA 'Gefüllt+Halbrahmen-Modus If FDrawSize>0 Then DrawXOutside=FDrawXS+FDrawSize DrawYOutside=FDrawYS+FDrawSize For DrawLoop=1 To DrawSequences 'Vertex/Ploygon-Zuweisung/Berechnungen DrawXPos1=Cos(DrawLoop*DrawAngle) DrawYPos1=Sin(DrawLoop*DrawAngle) DrawXPos2=Cos(DrawLoop*DrawAngle-DrawAngle) DrawYPos2=Sin(DrawLoop*DrawAngle-DrawAngle) 'Oval3D-Quartal-1/4-Mirror DrawV0=bbAddVertex(DrawNative,FDrawX+DrawXPos1*DrawXOutside,FDrawY+DrawYPos1*DrawYOutside,0, 1.5,0.5) DrawV1=bbAddVertex(DrawNative,FDrawX+DrawXPos2*DrawXOutside,FDrawY+DrawYPos2*DrawYOutside,0, 1.5,0.5) DrawV2=bbAddVertex(DrawNative,FDrawX+DrawXPos2*FDrawXS,FDrawY+DrawYPos2*FDrawYS,0, 0.5,0.5) DrawV3=bbAddVertex(DrawNative,FDrawX+DrawXPos1*FDrawXS,FDrawY+DrawYPos1*FDrawYS,0, 0.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV2,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV3,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawV0,DrawV1,DrawV2) bbAddTriangle(DrawNative,DrawV2,DrawV3,DrawV0) bbAddTriangle(DrawNative,DrawVC,DrawV3,DrawV2) 'Oval3D-Quartal-2/4-Mirror DrawV0=bbAddVertex(DrawNative,FDrawX+DrawXPos1*DrawXOutside,FDrawY-DrawYPos1*DrawYOutside,0, 1.5,0.5) DrawV1=bbAddVertex(DrawNative,FDrawX+DrawXPos2*DrawXOutside,FDrawY-DrawYPos2*DrawYOutside,0, 1.5,0.5) DrawV2=bbAddVertex(DrawNative,FDrawX+DrawXPos2*FDrawXS,FDrawY-DrawYPos2*FDrawYS,0, 0.5,0.5) DrawV3=bbAddVertex(DrawNative,FDrawX+DrawXPos1*FDrawXS,FDrawY-DrawYPos1*FDrawYS,0, 0.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV2,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV3,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawV0,DrawV1,DrawV2) bbAddTriangle(DrawNative,DrawV2,DrawV3,DrawV0) bbAddTriangle(DrawNative,DrawVC,DrawV3,DrawV2) 'Oval3D-Quartal-3/4-Mirror DrawV0=bbAddVertex(DrawNative,FDrawX-DrawXPos1*DrawXOutside,FDrawY-DrawYPos1*DrawYOutside,0, 1.5,0.5) DrawV1=bbAddVertex(DrawNative,FDrawX-DrawXPos2*DrawXOutside,FDrawY-DrawYPos2*DrawYOutside,0, 1.5,0.5) DrawV2=bbAddVertex(DrawNative,FDrawX-DrawXPos2*FDrawXS,FDrawY-DrawYPos2*FDrawYS,0, 0.5,0.5) DrawV3=bbAddVertex(DrawNative,FDrawX-DrawXPos1*FDrawXS,FDrawY-DrawYPos1*FDrawYS,0, 0.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV2,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV3,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawV0,DrawV1,DrawV2) bbAddTriangle(DrawNative,DrawV2,DrawV3,DrawV0) bbAddTriangle(DrawNative,DrawVC,DrawV3,DrawV2) 'Oval3D-Quartal-4/4-Mirror DrawV0=bbAddVertex(DrawNative,FDrawX-DrawXPos1*DrawXOutside,FDrawY+DrawYPos1*DrawYOutside,0, 1.5,0.5) DrawV1=bbAddVertex(DrawNative,FDrawX-DrawXPos2*DrawXOutside,FDrawY+DrawYPos2*DrawYOutside,0, 1.5,0.5) DrawV2=bbAddVertex(DrawNative,FDrawX-DrawXPos2*FDrawXS,FDrawY+DrawYPos2*FDrawYS,0, 0.5,0.5) DrawV3=bbAddVertex(DrawNative,FDrawX-DrawXPos1*FDrawXS,FDrawY+DrawYPos1*FDrawYS,0, 0.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV2,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV3,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawV0,DrawV1,DrawV2) bbAddTriangle(DrawNative,DrawV2,DrawV3,DrawV0) bbAddTriangle(DrawNative,DrawVC,DrawV3,DrawV2) Next Else 'Gefüllt-Allein-Modus For DrawLoop=1 To DrawSequences 'Vertex/Ploygon-Zuweisung/Berechnungen DrawXPos1=Cos(DrawLoop*DrawAngle) DrawYPos1=Sin(DrawLoop*DrawAngle) DrawXPos2=Cos(DrawLoop*DrawAngle-DrawAngle) DrawYPos2=Sin(DrawLoop*DrawAngle-DrawAngle) 'Oval3D-Quartal-1/4-Mirror DrawV0=bbAddVertex(DrawNative,FDrawX+DrawXPos1*FDrawXS,FDrawY+DrawYPos1*FDrawYS,0, 0.5,0.5) DrawV1=bbAddVertex(DrawNative,FDrawX+DrawXPos2*FDrawXS,FDrawY+DrawYPos2*FDrawYS,0, 0.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawVC,DrawV1,DrawV0) 'Oval3D-Quartal-2/4-Mirror DrawV0=bbAddVertex(DrawNative,FDrawX+DrawXPos1*FDrawXS,FDrawY-DrawYPos1*FDrawYS,0, 0.5,0.5) DrawV1=bbAddVertex(DrawNative,FDrawX+DrawXPos2*FDrawXS,FDrawY-DrawYPos2*FDrawYS,0, 0.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawVC,DrawV1,DrawV0) 'Oval3D-Quartal-3/4-Mirror DrawV0=bbAddVertex(DrawNative,FDrawX-DrawXPos1*FDrawXS,FDrawY-DrawYPos1*FDrawYS,0, 0.5,0.5) DrawV1=bbAddVertex(DrawNative,FDrawX-DrawXPos2*FDrawXS,FDrawY-DrawYPos2*FDrawYS,0, 0.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawVC,DrawV1,DrawV0) 'Oval3D-Quartal-4/4-Mirror DrawV0=bbAddVertex(DrawNative,FDrawX-DrawXPos1*FDrawXS,FDrawY+DrawYPos1*FDrawYS,0, 0.5,0.5) DrawV1=bbAddVertex(DrawNative,FDrawX-DrawXPos2*FDrawXS,FDrawY+DrawYPos2*FDrawYS,0, 0.5,0.5) bbVertexColor DrawNative,DrawV0,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbVertexColor DrawNative,DrawV1,DrawNFR,DrawNFG,DrawNFB,DrawNFA bbAddTriangle(DrawNative,DrawVC,DrawV1,DrawV0) Next End If End If End Function
An example :
'Strict Import blitz3d.blitz3dsdk Include "Inc_Perfect.bmx" Global Size_X = 1024 Global Size_Y = 768 bbBeginBlitz3D() bbGraphics3D Size_X,Size_Y,32,2 Global Camera=bbCreateCamera() bbCameraClsColor camera,64,64,72 DrawInit3D(Camera) NativeInit3D() Origin3D(Size_X,Size_Y) Global font1=LoadFont3D("cosmic.png",2,2) SetFont3D(10,1,1,0) 'SetFont3D(18,1) Global Ox=-(Size_X/2) Global Oy=(Size_Y/2) ' -------------------- ' Refresh frame number ' -------------------- Global AppFPS =45 Local FrameElapsed Local FrameTicks Local FrameTween:Float Local FramePeriod = 1000 / AppFPS Local FrameTime = MilliSecs () - FramePeriod ' ------------- ' Main loop ' ------------- While Not bbKeyHit(1) Or AppTerminate() ' ------------------- ' Frame rate limiting ' ------------------- Repeat FrameElapsed = MilliSecs () - FrameTime Until FrameElapsed FrameTicks = FrameElapsed / FramePeriod FrameTween# = Float (FrameElapsed Mod FramePeriod) / Float (FramePeriod) ' --------------- ' Update tweening ' --------------- For Local FrameLimit = 1 To FrameTicks If FrameLimit = FrameTicks Then bbCaptureWorld EndIf FrameTime = FrameTime + FramePeriod UpdateGame () bbUpdateWorld Next 'SetFont3D(1,1,1,0) 'ColorT3D(255,255,255) Text3D(font1,MouseX3D,MouseY3D,"A",1) 'Oval3D(50,50,100,100,0,1) ColorN3D(255,255,255,1) Line3D(Ox,Oy,MouseX3D,MouseY3D,1) ColorN3D(255,0,255,1) Plot3D(MouseX3D,MouseY3D,5) ColorN3D(255,255,0,1) 'Rect3D(MouseX3D+50,MouseY3D-50,50,50,False,1) Rect3D(MouseX3D,MouseY3D,512,384,False,1) ColorN3D(0,255,255,1) Rect3D(Ox,Oy,512,384,False,1) bbRenderWorld FrameTween Clear3D() bbText 50,50,MouseX3D+" / "+MouseY3D bbFlip False Wend Function UpdateGame() End Function