Da möchte ich nun aber doch mal nachhaken!
Ich sehe Euren Ansatz, die Sprite3D-Funktionen zu benutzen, ja zunächst ein. Mit den Befehlen ist das Problem zweifellos zu lösen. Aber eines wundert mich doch. Das Super Nintendo (SNES) konnte Grafiken wunderbar rotieren lassen und sogar problemlos zoomen (ohne AA - klar). Wie hat es das gemacht? Damals wurde doch noch nicht mit Vektoren und 3D hantiert, oder? Es muss doch einen schnellen Algorithmus geben, der dies kann? Mich würde auch brennend interessieren, wie das gemacht wird - ohne Sprite3D!
Irgendwie muss das auch mit der 8bit Grafik zusammenhängen. Ich hatte mal eine Sprache (DIV), die konnte das auch - ohne 3D! Diese Sprache hat allerdings nur 8bit-Grafiken dargestellt.
Sprites rotieren - 2D o. 3D
Das geht auch in Software Flott, wenn man sich auf 256 Farben beschränkt. Dazu solltest du dir mal Sinusfunktionen genauer anschauen.
Man kann das ganze gut mit Lookup Tabellen beschleunigen, das kostet aber entweder sehr viel Präzision oder verhältnismäßig viel Speicher.
Die Beschränkung auf 8bit reduziert nur die nötige Datenmenge, hat also nicht direkt mit Optimierung des ganzen zu tun.
Ein sehr gutes Tutorial gibt es hier http://pixwiki.bafsoft.com/mags/5/artic ... sincos.htm
Das SNES hatte sowas natürlich nicht in Software gemacht, dazu war die *quälend* langsame 65816 mit 3,6 MHz getaktete CPU vieeeel zu lahm. Im SNES gab es dafür einen dedizierten Grafikbeschleuniger.
Man kann das ganze gut mit Lookup Tabellen beschleunigen, das kostet aber entweder sehr viel Präzision oder verhältnismäßig viel Speicher.
Die Beschränkung auf 8bit reduziert nur die nötige Datenmenge, hat also nicht direkt mit Optimierung des ganzen zu tun.
Ein sehr gutes Tutorial gibt es hier http://pixwiki.bafsoft.com/mags/5/artic ... sincos.htm
Das SNES hatte sowas natürlich nicht in Software gemacht, dazu war die *quälend* langsame 65816 mit 3,6 MHz getaktete CPU vieeeel zu lahm. Im SNES gab es dafür einen dedizierten Grafikbeschleuniger.
Ja, das ist möglich. C-Code ist bei, den brauchst du eigentlich nur zu portieren. Ich hab vor ein paar Jahren sowas in C mit Allegro gemacht und das war trotz meines mangelnden Optimierungswissens auf meinem 800MHz PC rasend schnell. PB bietet dafür alles was notwendig ist und dazu ist sehr wenig notwendig... eigentlich nur zugriff auf den Framebuffer. Da sind wir dann auch schon beim Problematischen Teil: Point und Plot sind dafür zu langsam, du brauchst also einen Zeiger auf den Framebuffer und musst die Zeichenoperationen Manuell machen. Dafür brauchst du DrawingBuffer() und DrawingBufferPitch(). Klingt aber schwerer als es ist.
- MvD-Service
- Beiträge: 8
- Registriert: 23.11.2007 00:36
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
STARGÅTE hat geschrieben:ich habe dabei festgestellt das auch kombinationen keine Probleme machen : 64*128 oder 512*32 ...
...du meinst eine potenz von zwei....Fluid Byte hat geschrieben:Die Höhe und Breite einer Textur müssen nicht zwangsläufig identisch sein sondern nur ein Vielfaches von 2 sein.

exactement!CSprengel hat geschrieben:Meines Wissens nach kommt es auf die Grafikkarte an, so kann es passiern das 32 * 64 funktioniert, aber nicht auf allen Rechnern. Zumindest hab ich sowas in Erinnerung.
...probier mal auf ner etwas älteren ATI nicht quadratische textures, da geht NIX
auf meiner GF2 hingegen konnte ich sogar ungerade Dimensionen verwenden, also z.b. 187x113
also, wer allgemeine funktionalität haben möchte (und das ist ja wohl allgemein der fall)
sollte sich an die vorgaben halten, dafür sind sie da.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
äm ist RADEON 7500 nicht alt genug ? das ding konnte noch nicht mal OpenGL.Kaeru Gaman hat geschrieben:exactement!
...probier mal auf ner etwas älteren ATI nicht quadratische textures, da geht NIX
Ich musste immer T+L einstellen wo andere Shader stehen hatten -.-
und da funzte diese Rechteckigen sachen
Aber ich stimme dir Zu, lieber auf nummer sichergehen und Quadratische Grafiken der größe 2^n*2^n nehmen
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Also eine voll OpenGL1.3 fähige Grafikkarte sollte auch Rechteckige Texturen darstellen können, solange die Dimensionen zweierpotenzen sind und keine Seite länger als 256 Texel groß ist... soviel zur Theorie... wer immer mal wissen wollte, woher ATI ihren schlechten Ruf herhaben was Treiber angeht, der brauch sich darauf nur zu verlassen ^^