Mischen der festen Funktionspipeline und der programmierbaren Pipeline in opengl

8

Okay, also hier ist mein Problem. Ich habe ein Framework, das von meiner Schule für Visualisierungen verwendet wird, und ich habe versucht, es für 3D-Grafiken einzurichten. Problem ist, dass das Framework derzeit nur die feste Funktionspipeline zum Zeichnen verwendet. Ohne das durcheinander zu bringen, habe ich versucht, den alten Code zu umgehen, der immer noch die feste Funktionspipeline verwenden muss, und ich habe Einrichtungen eingerichtet, die die Erstellung von Shadern und Shader-Programmen ermöglichen. Ich habe einen einfachen Farb-Shader zum kompilieren und ich habe auch ein Test-Vertex-Array (ein grünes Dreieck) gemacht.

Als ich es nun rendern wollte, wurde der Bildschirm schwarz. Vorher gab es eine Menge 2D-Sprites und was sich nicht über den Bildschirm bewegte, sondern durch den Code, den ich der Render-Funktion hinzugefügt hatte, fand ich heraus, dass der Bildschirm schwarz wird, sobald ich glUseProgram anrufe. Wenn ich das glUseProgram und die Teile, in denen ich die Uniformen und das Zeichnen einstelle, auskommentiere, funktioniert alles normal. Deaktiviert glUseProgram die feste Funktionspipeline? wenn ja, gibt es das überhaupt, um es an sich zu reaktivieren?

    
FatalCatharsis 10.03.2014, 06:57
quelle

2 Antworten

12

Sobald Sie glUseProgram fixed function verwenden, wird die Pipeline durch eine programmierbare Pipeline ersetzt. Sie können nicht gleichzeitig feste Funktion + programmierbare Pipeline haben. Angenommen, Ihre Szene enthält Nebel. Aber wenn du das in deinem Fragment-Shader nicht beachtet hast, wirst du es in der endgültigen Ausgabe nicht sehen.

Obwohl Sie in Ihrer Render / Draw-Funktion etwas Ähnliches tun können

%Vor%     
Abhishek Bansal 10.03.2014, 08:12
quelle
1

Es gibt ein Programm (ShaderGen), das Shader erzeugt, die der festen Pipeline entsprechen.

Ссылка

Verwenden Sie das, wenn Sie können, da der Ansatz von Abishek Sie auf Kompatibilitätskontexte beschränkt.

    
user1095108 10.03.2014 08:39
quelle

Tags und Links