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

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

21

19.01.2012, 17:53

http://www.opengl.org/sdk/docs/man/xhtml/glViewport.xml

Man könnte auch sagen: Lass die Änderungen des Viewports einfach mal weg. Beide.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (19.01.2012, 17:58)


Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

22

19.01.2012, 18:00

Ich hab das jetzt eig. so gelöst:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
glViewport(0, 0, w, h);
glBindTexture(GL_TEXTURE_2D, Screen);

this.bind_anyway();

glBegin(GL_QUADS);
    // top left
    glTexCoord2f(0.25, 0.25);
    glVertex2f(0, 0);
    // top right
    glTexCoord2f(0.8, 0.25);
    glVertex2f(w, 0);
    // bottom right
    glTexCoord2f(0.8, 0.8);
    glVertex2f(w, h);
    // bottom left
    glTexCoord2f(0.25, 0.8);
    glVertex2f(0, h);
glEnd();

glViewport(0, 0, 400, 400);


Resultat: http://imageshack.us/photo/my-images/207/resultg.png/

Ist das "akzeptabel", oder eher nicht?

Nur diese Schwarze Box stört irgendwie noch.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

23

19.01.2012, 18:05

Wieso 0.25 und 0.8? Willst Du nur Ausschnitte? Und wie gesagt, lass die glViewport()-Calls weg, Du scheinst Dir nicht im Klaren darüber zu sein, was die tatsächlich bewirken.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

24

19.01.2012, 18:10

Ja ich wollte nur einen Teil Ausschnitt, sprich eine Sub Texture. Die Werte sind nur fix gewählt und werden noch dynamisch.
Ohne Aufrufe von glViewport erhalte ich nur das schwarze Quadrat. Mir wurde mehrfach gesagt, das sie bei glCopyTex* mit zu benutzen sind. Inwiefern verstehe/benutze ich sie falsch?

edit: Nun klappt fast alles, der schwarze Rahmen drum herum wirkt aber immer noch ziemlich blöd. Lässt sich da was machen?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Architekt« (19.01.2012, 18:34)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

25

19.01.2012, 18:35

Gut, dann frage ich mal andersrum:
Angenommen du hast einen Viewport 200x200 und renderst zwei weiße Quadrate mit je 100x100 Kantenlänge auf schwarzem Grund. Eins mit Offset 0/0 und eins mit Offset 100/100. Also das hier:

(Link)


Nun änderst Du den Viewport auf 100x100 und renderst die Quadrate EXAKT mit den selben Koordinaten wie vorher (also wieder mit je 100 Kantenlänge und einem Offset von 0/0 und 100/100), aber in blau. Wie glaubst Du sieht das Ergebnis aus?

So?

(Link)


Oder so?

(Link)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

26

19.01.2012, 18:37

Ich würde sagen letzteres, da der Bereich in dem nun gezeichnet wird 100x100px beträgt und damit exakt das weiße Rechtecke an der Position 0|0 betrifft.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

27

19.01.2012, 18:40

Richtig. Dann stellt sich aber die Frage, wieso Du den Viewport auf 80/80 änderst und mit 80/80 Breite Dein Quad renderst? Das Ergebnis entspricht in etwa dem einzelnen kleinen blauen Quadrat links oben. Das kann doch nicht ganz das sein, was Du willst, oder? Du willst doch sicher vielmehr Dein Ergebnis TATSÄCHLICH 80x80 Pixel groß und nicht nur (80/400)*80=0.2*80=16 Pixel groß. Oder doch?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

28

19.01.2012, 18:43

korrekt, ich möchte eine 80x80 große Sub Texture des Originals. Also sollte ich den Viewport auf die Größe der gesamten Textur stellen, oder beide Calls wie du zuvor gesagt hast, weglassen? Bin mir nun doch ein wenig unsicher.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

29

19.01.2012, 18:46

OK, vielleicht sollten wir erstmal klären, was Du willst.
Willst Du nur den Ausschnitt 0/0 bis 80/80 aus der Original 128x128 Textur? Oder willst Du die 128x128 auf 80x80 skalieren?
(Dein Code macht übrigens keins davon)
Für ersteres lass die glViewport() komplett weg.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

30

19.01.2012, 18:49

Ich möchte einen Ausschnitt von x, y (wobei der dynamisch sein soll später und nun erstmal auf 0|0 belassen werden kann) auf w,h (welche hier 80|80 sind).
Wenn ich die Viewports weglassen, habe ich wieder nur das schwarze Quadrat und keine andere sichtbare Ausgabe. Ich schätze mal, ich muss dann mit den X und Y Koordinaten von glCopyTexImage arbeiten?
edit: soweit erstmal der Code. glViewport Calls sind auskommentiert.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Werbeanzeige