Compilermeldungen von Cg (JOGL)

TriipaxX

Grünschnabel
Moin zusammen.

Wenn ich Cg-Programme in meinem JOGL-Programm lade und ich habe im Cg-Quellcode einen Fehler, dann erhalte ich einfach nur die simple Fehlermeldung "CG ERROR : The compile returned an error." beim Aufruf meiner checkCgError() Funktion.
Ich verstehe nicht warum ich keine detailliertere Compilermeldung bekomme die mir sagt, in welcher Zeile der Fehler auftritt und welches Problem besteht. Denn so ist es extrem schwierig zu debuggen.

Hier der Code meines Loaders für die CG-Programme:
Code:
public static CGprogram loadAndEnableCGProgram(CGcontext cgContext, String path, int profile, String entry, String[] args) {
        assert(CgGL.cgIsContext(cgContext));
        String pathToFile = path.substring(1);
        System.out.println("*************************************");
        System.out.println("Create Cg Program: " + pathToFile);
        CGprogram program = null;
        try {
            program = CgGL.cgCreateProgramFromStream(cgContext, CgGL.CG_SOURCE, ResourceRetriever.getResourceAsStream(pathToFile), profile, entry, args);
        } catch(IOException e) {
            throw new RuntimeException("Error loading Cg program: " + path, e);
        }
        checkCgError();
        if (!CgGL.cgIsProgramCompiled(program)) {
            System.out.println("Compile Shader...");
            CgGL.cgCompileProgram(program);
            checkCgError();
        }

        // Enable the appropriate vertex profile and load the vertex program.
        System.out.println("Enable Cg Profile for Shader...");
        CgGL.cgGLEnableProfile(profile);
        checkCgError();
        System.out.println("Load Cg Program...");
        CgGL.cgGLLoadProgram(program);
        checkCgError();
        
        return program;
    }

und hier der Code der checkCgError() (kopiert aus den Jogl demo sources):
Code:
    public static void checkCgError() {
        /*CGerror*/ int err = CgGL.cgGetError();
        if (err != CgGL.CG_NO_ERROR) {
            System.out.println("Error# : " + err);
            System.out.println(CgGL.cgGetErrorString(err));
            System.exit(1);
        }
    }

Der Fehler wird schon beim Aufruf von "CgGL.cgCreateProgramFromStream(....)" erzeugt. Logischerweise ist das debuggen mit solch schmächtigen Informationen extrem schwer oder eher unmöglich.

NEED HELP!!

MfG
Trii
 
Fehler gefunden:

in der ErrorCallback Funktion hat eine Zeile gefehlt und zwar: "System.out.println(CgGL.cgGetLastListing(cgContext));".

Code:
    public static void checkCgError(CGcontext cgContext) {
        /*CGerror*/ int err = CgGL.cgGetError();
        if (err != CgGL.CG_NO_ERROR) {
            System.out.println("Error# : " + err);
            System.out.println(CgGL.cgGetErrorString(err));
            System.out.println(CgGL.cgGetLastListing(cgContext));
            System.exit(1);
        }
    }

Mit dieser Zeile bekomme ich nun genaue Informationen über meinen Fehler.

MfG
Trii
 
Zurück