OpenGL - Błąd narzędzi konsolidatora LNK2019
Ostatnio zmodyfikowano 2021-02-27 20:56
superetoille Temat założony przez niniejszego użytkownika |
OpenGL - Błąd narzędzi konsolidatora LNK2019 » 2021-02-27 19:48:19 Witam, I znów się motam przy konfigurowaniu Visual Studio 2019, tym razem przy obsłudze biblioteki OpenGL. Przerabiam książkę Janusza Ganczarskiego "OpenGL Podstawy programowania grafiki 3D". Wszystko robiłam dokładnie jak jest opisane w książce. Dołączyłam headery, i biblioteki pobrane z ftp Heliona dołączonego do książki. Książka nie jest najnowsza bo z 2015 ale też nie wiekowa. Proszę ewentualnie o pomoc skąd pobrać i jak zainstalować biblioteki żeby to wszystko działało. Przy kompilowaniu programu dołączonego do książki występują błędy poniżej: Błąd LNK2019 nierozpoznany symbol zewnętrzny "unsigned int __cdecl LoadShader(unsigned int,char const *)" (?LoadShader@@YAIIPBD@Z) przywołany w funkcji "void __cdecl InitScene(void)" (?InitScene@@YAXXZ) OpenGL2 C:\Users\zuza\source\repos\OpenGL2\OpenGL2\kwadrat.obj 1 Błąd LNK1120 liczba nierozpoznanych elementów zewnętrznych: 3 OpenGL2 C:\Users\zuza\source\repos\OpenGL2\Debug\OpenGL2.exe 1 Błąd LNK2019 nierozpoznany symbol zewnętrzny "void __cdecl LinkValidateProgram(unsigned int)" (?LinkValidateProgram@@YAXI@Z) przywołany w funkcji "void __cdecl InitScene(void)" (?InitScene@@YAXXZ) OpenGL2 C:\Users\zuza\source\repos\OpenGL2\OpenGL2\kwadrat.obj 1 Błąd LNK2019 nierozpoznany symbol zewnętrzny _main przywołany w funkcji "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) OpenGL2 C:\Users\zuza\source\repos\OpenGL2\OpenGL2\MSVCRTD.lib(exe_main.obj) 1
Kod programu poniżej: #include <cstdlib> #include "shaders.h"
GLuint program;
GLuint vertexBuffer;
GLuint vertexArray;
GLfloat position[ 2 * 3 * 2 ] = { - 0.5f, - 0.5f, 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, - 0.5f, 0.5f, 0.5f, - 0.5f, 0.5f };
void DisplayScene() { glClear( GL_COLOR_BUFFER_BIT ); glBindVertexArray( vertexArray ); glUseProgram( program ); glDrawArrays( GL_TRIANGLES, 0, 2 * 3 ); glUseProgram( 0 ); glBindVertexArray( 0 ); }
void Reshape( int width, int height ) { glViewport( 0, 0, width, height ); }
void InitScene() { glClearColor( 1.0f, 1.0f, 1.0f, 1.0f ); program = glCreateProgram(); glAttachShader( program, LoadShader( GL_VERTEX_SHADER, "kwadrat_vs.glsl" ) ); glAttachShader( program, LoadShader( GL_FRAGMENT_SHADER, "kwadrat_fs.glsl" ) ); LinkValidateProgram( program ); glGenVertexArrays( 1, & vertexArray ); glBindVertexArray( vertexArray ); glGenBuffers( 1, & vertexBuffer ); glBindBuffer( GL_ARRAY_BUFFER, vertexBuffer ); glBufferData( GL_ARRAY_BUFFER, sizeof( position ), position, GL_STATIC_DRAW ); GLuint positionLoc = glGetAttribLocation( program, "inPosition" ); glVertexAttribPointer( positionLoc, 2, GL_FLOAT, GL_FALSE, 0, NULL ); glEnableVertexAttribArray( positionLoc ); glBindVertexArray( 0 ); }
void DeleteScene() { glDeleteProgram( program ); glDeleteBuffers( 1, & vertexBuffer ); glDeleteVertexArrays( 1, & vertexArray ); }
Proszę także o podpowiedź czy można programować grafikę bez używania do tego specjalnych bibliotek graficznych jak OpenGL czy SDL używając tylko tych standardowo dołączonych? I jak ewentualnie to robić? Dziękuję za pomoc i pozdrawiam |
|
DejaVu |
» 2021-02-27 20:56:23 |
|
« 1 » |