2010-11-22 7 views
4

Ich habe einen Vertex-Shader, der Scheitelpunkte umwandelt, um einen Fisheye-Effekt zu erstellen. Es ist möglich, nur den Vertex-Shader zu verwenden und eine feste Pipeline für den Fragmentteil zu verwenden.Verwenden von programmierbaren und festen Pipeline-Funktionalität in OpenGL

Also im Grunde habe ich eine Anwendung, die keine Shader verwendet. Ich möchte einen Fisheye-Effekt mit einem Vertex-Shader anwenden, um alle Scheitelpunkte zu transformieren, und dann der Anwendung überlassen, um auf Beleuchtung, Texturierung usw. zu achten?

Wenn dies nicht möglich ist, ist es möglich, einen Fischauge-Effekt zu bekommen, indem man mit dem Inhalt des gl-back-Puffers herumhantiert?

Dank

Antwort

3

Wenn Ihr Code eine feste Funktion hat, dann ist das, was Sie beschrieben haben, ein Problem - deshalb ist es gut, wenn Sie Ihren Grafikcode in Shadern haben: Sie können alles leicht ändern. Denken Sie daran, sie in Ihrem nächsten Projekt zu verwenden. :)

OK, aber für diesen besonderen Ich gehe davon aus, dass Sie nicht wollen, jetzt Shadern Ihre gesamte Rendering von Grund auf neu zu schreiben ...

Sie erwähnten Sie einen „Fisheye-Effekt“ haben wollen. Scheint so, als hättest du Glück, denn ich glaube, dass du keine Shader für diesen Effekt benötigst! Wenn wir über den gleichen Effekt sprechen, können Sie dies erreichen, indem Sie einfach die Matrix GL_PROJECTION von der festen Funktion von OpenGL zu einer perspektivischen Matrix mit einem größeren Blickwinkel ersetzen.

+0

Können Sie dies tun, indem Sie einen breiteren fov erstellen? http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/domefisheye/fisheye/ Wenn ich kann, dann Ihr Recht, ich bin wirklich glücklich. Ich denke, ich hätte es eine Fisheye-Projektion nennen sollen. – Adham

+0

Hm, sieht dieses Ding mehr sophiscated; Ich beziehe mich auf den Effekt, den du in Quake hast, wenn du ein hohes Sichtfeld einstellst (120 oder so anstelle von 90), manchmal wird es auch "Fischauge" genannt. Für das, was du postest, würden tatsächlich Shader benötigt, denke ich ... Oder vielleicht kannst du die Vertices auf der CPU transformieren? Hast du viele davon? – Kos

+0

Ich bin offen für alles, also ist es egal. Wie würden Sie die Scheitelpunkte auf der CPU transformieren? – Adham

1

Ja, es ist möglich, altough einige Karten (vor allem ATI) unterstützen nicht einen Vertex-Shader ohne Fragment-Shader verwenden.

+0

Also, wenn ich gerade kompiliert und den Vertex-Shader verwendet, wird alles andere, was die Anwendung wie Texturierung und Beleuchtung macht, bleiben? – Adham

+0

Ich versuchte dies und ID scheint nicht zu funktionieren. So ziemlich alles ist schwarz. – Adham

+0

Ich glaube, dass die Schlussfolgerung von Matias könnte lesen "es könnte auf einigen Hardware möglich sein, aber das ist ein unzuverlässiger Hack und tun es nicht". – Kos

Verwandte Themen