Ich habe ein Game Engine -Projekt in OpenGL. Es funktioniert im Debug -Modus hervorragend, aber eine Art Optimierung beim Wechsel zur Freigabe führt dazu, dass ich OpenGL -Fehler 1282: < /p>
erhalteDebug message (1282): GL_INVALID_OPERATION error generated. State(s) are invalid
program texture usage.
Source: API
Type: Error
Severity: high
< /code>
(Ich weiß, dass OpenGL -Fehler nicht beschreibend sind, tragen Sie mit mir.#pragma optimize("", off)
auto gse::renderer3d::get_camera() -> camera& {
return g_camera;
}
#pragma optimize("", on)
< /code>
Wenn diese Funktion also optimiert ist, verursacht sie irgendwie einen Texturfehler. Dies ist für mich nicht sinnvoll, da alle Shader -Bindungsoperationen mit g_camera in gse :: renderer3d durchgeführt werden, was bedeutet, dass sie direkt auf die Variable g_camera in der GSE :: Renderer3D -Namespace zugreifen, ohne die Getter -Funktion zu verwenden. Ungeachtet dessen ist es jedoch nicht sinnvoll, dass der Getter optimiert wird, da er während der gesamten Lösung mehrmals direkt zugegriffen wird. Ich habe auch dafür gesorgt, dass G_Camera ordnungsgemäß initialisiert ist. Auch wenn ich durch den Compiler ein cross -Flag einstellte: < /p>
#ifdef _MSC_VER
#define FORCE_USED __declspec(dllexport)
#else
#define FORCE_USED __attribute__((used))
#endif
FORCE_USED auto gse::renderer3d::get_camera() -> camera& {
return g_camera;
}
< /code>
(bereitgestellt von GPT, ich bin kein Experte mit meinen Compiler -Flags) < /p>
Ich erhalte das Problem. Ich bin verblüfft davon, weil ich nicht sehen kann, warum ein einfacher Getter dies verursacht. Die zu verwiesene Kameraklasse wird vom Compiler weiterhin optimiert. Nur sagen, dass die tatsächliche Funktion get_camera () ignoriert wird.>
OpenGL -Fehler 1282 im Freigabemodus aufgrund der Compiler -Optimierung, verfolgt auf eine Getter -Funktion ⇐ C++
-
- Similar Topics
- Replies
- Views
- Last post