Leuchtkegelalgorithmus
Übersicht

lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mein Gott,könntet ihr euch nicht im offtopic über diese Weltbewegende Frage streiten und nicht "meinen" Thread mit offtopicgelaber zumüllen ![]() ![]() Sry,aber ist doch wahr ![]() ![]() ![]() |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
habe ich auch nicht,einen post vor dir hab ich schon gesagt,das ich mein Problem gelöst habe ![]() Aber ich will dir jetzt nicht für deine Mühen die kalte Schulter zeigen. Vielen Dank,aber ich habe das was du mir zeigen wolltest in 2 Zeilen erledigt ![]() |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
So,da ich nun den Lichtkegel und so fertig habe,möchte ich nun,das ich diesen auch drehen kann. Also das man jetzt praktisch wie bei einer Taschenlampe den Kegel um seine eigene Achse rotieren lassen kann.
Mir ist schon klar,das ich da was mit cos und sin was an der Schleife verändern muss,aber wo? Hab schon viel rumprobiert aber es hat nicht so wirklich was geklappt. ![]() hier der Code der Funktion: Code: [AUSKLAPPEN] Function DrawImagealpha(image,ix,iy,bx#,by#,frame,alpha#,angle#)
EditorBufferAlphaImg = CreateImage(bx,by) SetBuffer ImageBuffer(EditorBufferAlphaImg) DrawImage image,0,0,frame SetBuffer BackBuffer() LockBuffer ImageBuffer(EditorBufferAlphaImg) LockBuffer BackBuffer() ;------------------------------------------------------------------------------- m# = Float((bx#/2)/by#) For y# = by To 0 Step -1 For x# = ((by-y#)*m) To (y#*m) Step 1 BackPx= ReadPixelFast((ix+x),(iy+y),BackBuffer()) AlphaPx= ReadPixelFast(x,y,ImageBuffer(EditorBufferAlphaImg)) br = (BackPx And $FF0000) Shr 16 bg = (BackPx And $00FF00) Shr 8 bb = (BackPx And $0000FF) ar = (AlphaPx And $FF0000) Shr 16 ag = (AlphaPx And $00FF00) Shr 8 ab = (AlphaPx And $0000FF) r%=br+alpha# g%=bg+alpha# b%=bb+alpha# If r >= 255 Then r = 255 EndIf If g >= 255 Then g = 255 EndIf If b >= 255 Then b = 255 EndIf If r+g+b >= 765 Then r= 255 g= 255 b= 255 EndIf RGB = (r Shl 16) + (g Shl 8) + b WritePixelFast(x#,y#,RGB,ImageBuffer(EditorBufferAlphaImg)) Next Next UnlockBuffer BackBuffer() UnlockBuffer ImageBuffer(EditorBufferAlphaImg) MaskImage EditorBufferAlphaImg, 0,0,0 DrawImage EditorBufferAlphaImg,ix,iy FreeImage EditorBufferAlphaImg End Function Wäre sehr dankbar für eure Hilfe. THX! |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
Apocalyptic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ähm, deine Funktion ist aber nicht für Realtimeeffekte gedacht, oder? Wenn doch, dann ist Createimage in jeder Schleife tödlich, und man könnte auch sonst noch einiges optimieren. Wofür erstellst du überhaupt ein Bild, zeichnest was ein, zeichnest das Bild in den Backbuffer und dann löschst du es? Da kannst du doch gleich in den Backbuffer schreiben.
Hab mir den Code nicht genau angeguckt, deswegen kanns sein, dass ich mich irre. Wenn du das Bild wirklich brauchst, kannst du das ja auch im Vorraus drehen. Ansonsten sollte dir jedes sin/cos Tutorial weiterhelfen. |
||
Suum cuique
[ www.ffs-net.de.vu ] [ Raycaster ] |
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja es ist in Realtime gedacht.Ja ich denke da kann man noch was verbessern,das stimmt.Läuft aber auch so schon schnell (so ca. 70-80 FPS,werde das aber so machen das es vorberechnet wird und wenn da sich der SPieler drin bewegt,dann wird es erst erneuert)
zu sin und cos: Ich hab schon so viel ausprobiert aber ich weiß nicht so recht wo ich das hinpacken soll ![]() |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mal ne kleine Frage:
Verwendest du Blitz2D oder Blitz3D? Weil in Blitz3D gäbe es einen ziemlich extremen vereinfachungstrick der vor allem auch Drehung des Kegels zulässt ohne dass dafür massig zeit drauf geht. ( über nen Quad mit der Lichtkegeltextur und TextureBlend 5 ) ansonsten x = cos(winkel) * Radius y = sin(winkel) * Radius |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group