Also als erstes zur falschen Position:
ich bin mir nicht sicher, aber kann es sein, dass
glViewport(X, Y, W, H); Probleme macht? Probier mal
glViewport(0, 0, W, H); aus. Ich weiß ja nicht, für was die Variablen X und Y genau sollen, ich denke, dass sie die Fensterposition beinhalten. Jedoch ist diese für
OpenGL egal, da das komplett unterschiedliche Sachen sind.
Zum Flackern:
Das Flackern an sich sagt mir schon was, doch das kommt mir sehr seltsam vor. In
OpenGl flackert normalerweise nichts, da du alles in einen Background-Buffer zeichnest, der dann in einem Rutsch ans Fenster übergeben wird - aber erst wenn er fertig ist. Ich glaub, dein Code hat da irgendwo ne Macke.
PS: das Flackern kann auch passieren, wenn du
OpenGl mit
GDI-Objekten (z.B. der
VCL) kombinierst. Da flackert aber nicht
OpenGl sondern die
VCL bzw.
GDI-Sachen.