Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

27.03.2004, 02:47

Cursor und Laser-Fragen

hallo,

hab heut nur 2 fragen. Hoff es weiß wieder einer Rat.

ich hab mir mal n Cursor gebastelt aus einer Textur weil der Windowscursor beim umsehen immer ruckelt.

Die Position berechne ich so:
vPos = Kameraposition,
vRot = Kamerarotation

Quellcode

1
2
3
4
5
6
7
8
9
10
11
__declspec(dllexport) void __cdecl Cursor_Render(VECTOR3 vPos, VECTOR3 vRot, float fSize)
{
  if (!bCursor) { bCursor=true; Cursor_Create(file); }

  vPos.x += 3 * sinf(vRot.y); 
  vPos.z += 3 * cosf(vRot.y);
  vPos.y += 3 * sinf(vRot.x);

... 
und dann der ganze Matrix-Schnickschnack
...


Das geht super (die 3 ist die Entfernung vor der Kamera)
aber wie bekomm ich den Cosinus und Sinus da raus?
Das stockt manchmal glaub ich deswegen.
Bei fSize darf ich außerdem nicht über 0.3 hinaus weil die Textur dann riesig ist aber wenn ich die 3 bei der Positionsberechnung ändere und das weiter in die Ferne rücke, dann könnten Objekte vor den Cursor erscheinen.

Kann ich mit sowas ähnlichen wie StretchRect(..) für 3D aber nicht einfach die Textur in die Mitte mappen?

Wie bekomm ich sonst den Sinus und Cosinus weg?

2. Frage:

Waffen auch mit Textur?

thx schonmal

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

27.03.2004, 08:53

Pro Thread eine Frage,
pro Frage ein Thread ;)

Ich verstehe nicht ganz, was Du überhaupt machen willst.
Wenn Du keinen Sinus benutzen willst, warum tust Du es dann?
Achja - und so langsam ist der nun auch wieder nicht, das Ruckeln wird also von woanders her kommen.

Anonymous

unregistriert

3

27.03.2004, 12:30

hallo,

ich möcht ne textur vor die kamera kleben für das zielfernrohr
und da hab ich aus meiner position-kameraberechnung das mit sinf und cosf genommen und eine 3 davor gesetzt weil die textur dann 3.0f entfernt vor der kamera ist.

wenn ich die textur aber weiter nach hinten setzen tu (was besser wäre weil sonst muss ich die immer mit maximal 0.3f skalieren)
dann erscheinen objekte plötzlich vor/in der textur wenn da ein objekt grad ist.
den zbuffer hab ich drin in der texturrender-funktion.
wird abgeschaltet und nach draw.. wieder an.

wie bekomm ich die textur weiter nach hinten damit die nicht so groß ist
ohne dass das mit objekten vermalt wird?

mfg

Anonymous

unregistriert

4

27.03.2004, 13:42

wie willst du das jetzt machen? willst du das so machen wie in counter? also das es wie ne Blende wirkt? Und die texttur kannst du ach einfach skalieren(kannst es ja gleich beim erstellen der Textur festlegen, wie groß die ist) und einfach ohne Tests auf den Buffer "klatschen".(solltest aber nicht den buffer sperren. Laut der Doku zieht das ganzschön).
Das mit der geschwindigkeit ist interessanter. Solltest dir dazu mal den Abschnitt "Performance Optimizations" aus der Doku durchlesen.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

5

27.03.2004, 15:23

Wenn Du die ABFRAGE des Z-Buffers ausgeschaltet hast, und das Fadenkreuz am Schluss malst, dann müste es alles andere übermalen.

Anonymous

unregistriert

6

27.03.2004, 16:07

den cursor als letztes malen? genau das war falsch.
ich hab den mittendrin gemalt. :-(
jetzt mal ich den am ende und es gehts, super :huhu:

was den vertexbuffer angeht:
ich kopier nur die vertexdaten beim erstellen rein,
ich sperr den nur da also.
aber bei "textur skalieren" ist mir n guter einfall gekommen.
ne automatisch kleiner skalierte textur wenn n objekt in sicht ist.
:-)

thx

Anonymous

unregistriert

7

27.03.2004, 18:10

Nein ich meinte du sollst nicht den Backbuffer sperren und dann das Bild drauf schreiben. Das ist nämlich auch eine Möglichkeit, aber sehr langsam ist.(also nichts mit vertexbuffer)
:huhu:

Werbeanzeige