Jump to content
  • Advertisement

AdamYon

Member
  • Content Count

    6
  • Joined

  • Last visited

Everything posted by AdamYon

  1. N.I.B., that is a change I made when looking for solution.   3TATUK2, I have to delete everything new to make it render.
  2. Hi, I wanted to implement Phong shading for my heightmap. So far I was using simple shading (set color manually) and everything worked fine. Then the work started: I wrote shader, passed some uniform variables, commented out int vec3 vNormal; in shader and everything was fine.   Today I wanted to pass normals array, because I'd read that in newer version I have to calc them manually. What I did is create ARRAY_BUFFER, calculate normals ({0,1,0} for testing purposes), pass them to buffer, enabled VA and set glVertexAttribPointer.   Shader has stopped working since then - nothing is rendered, only background color. Doesn't matter if lines using vNormal in shader are active or in the comment.   I paste sources below - renderer class with new lines and shaders:   MapRenderer.hpp #ifndef DEPENDENTIA_MAPRENDERER_HPP #define DEPENDENTIA_MAPRENDERER_HPP #include "Map.hpp" #include <vector> #include <iostream> class MapRenderer { public: MapRenderer(Map* gameMap, Camera* camera) : gameMap(gameMap), camera(camera) { indices = gameMap->getSizeX() * 2 * gameMap->getSizeY() + 2 * gameMap->getSizeY() + gameMap->getSizeY(); prepareOGLBuffers(); prepareShaderPrograms(); prepareIndicesData(); generateHeightMap(); } void render() { /* if (gameMap has changed) */ //generateHeightMap(); glClearColor(0.234357f, 0.472656f, 0.667968f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); // Temporary wireframe updateShaderVariables(); renderHeightMap(); }; ~MapRenderer() { glDeleteProgram(shaderProgram); glDeleteBuffers(1, &hmNormals); glDeleteBuffers(1, &hmVBOindices); glDeleteBuffers(1, &hmVBO); glDeleteVertexArrays(1, &hmVAO); // NEW } protected: void prepareOGLBuffers() { glGenVertexArrays(1, &hmVAO); glGenBuffers(1, &hmVBO); glGenBuffers(1, &hmVBOindices); glGenBuffers(1, &hmNormals); // NEW glBindVertexArray(hmVAO); glBindBuffer(GL_ARRAY_BUFFER, hmVBO); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, hmVBOindices); glBindBuffer(GL_ARRAY_BUFFER, hmNormals); // NEW } void prepareShaderPrograms() { shaderProgram = loadShaders("shaders/sample.vs", "shaders/sample.fs"); locMVP = glGetUniformLocation(shaderProgram, "mvpMatrix"); locMV = glGetUniformLocation(shaderProgram, "mvMatrix"); locNormalM = glGetUniformLocation(shaderProgram, "normalMatrix"); locLightPos = glGetUniformLocation(shaderProgram, "vLightPosition"); } void prepareIndicesData() { unsigned int* hmIndices = new unsigned int[indices]; for (int i=0; i<gameMap->getSizeY(); i++) { unsigned int indexOffset = i * ((gameMap->getSizeX() + 1) * 2 + 1); unsigned int vertexOffset = i * (gameMap->getSizeX() + 1); for (int j=0; j<2*(gameMap->getSizeX()+1)+1; j++) { hmIndices[indexOffset + j] = j/2 + (j % 2 ? (gameMap->getSizeX() + 1) : 0) + vertexOffset; } } for (int i=1; i<=gameMap->getSizeY(); i++) { hmIndices[i * ((gameMap->getSizeX() + 1) * 2 + 1) - 1] = gameMap->getHeightMapSize(); } glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned int) * indices, hmIndices, GL_STATIC_DRAW); delete[] hmIndices; } void generateHeightMap() { // Fill VAO // TODO: refactor glm::vec3* heightMapVertices = new glm::vec3[gameMap->getHeightMapSize()]; for (int i=0; i<gameMap->getHeightMapSize(); i++) { float x = float(i % (gameMap->getSizeX()+1)), z = float(i / (gameMap->getSizeX()+1)); heightMapVertices[i] = glm::vec3( x, 0.5 * (float) gameMap->getHeightAt(i), z ); } glBufferData(GL_ARRAY_BUFFER, sizeof(glm::vec3) * gameMap->getHeightMapSize(), heightMapVertices, GL_STATIC_DRAW); delete[] heightMapVertices; // Normals buffer // NEW glm::vec3* hmNormalsData = new glm::vec3[gameMap->getHeightMapSize()]; for (int i=0; i<gameMap->getHeightMapSize(); i++) { hmNormalsData[i] = glm::vec3( 0, 1, 0 ); } glBufferData(GL_ARRAY_BUFFER, sizeof(glm::vec3) * gameMap->getHeightMapSize(), hmNormalsData, GL_STATIC_DRAW); delete[] hmNormalsData; } void updateShaderVariables() { MVP = camera->getProjectionMatrix() * camera->getViewMatrix(); glm::mat4 MV = camera->getViewMatrix(); glm::mat3 normalMatrix = glm::mat3(glm::transpose(glm::inverse(MV))); glm::vec3 lightPos(5, 10, 5); glUniformMatrix4fv(locMVP, 1, GL_FALSE, &MVP[0][0]); glUniformMatrix4fv(locMV, 1, GL_FALSE, &MV[0][0]); glUniformMatrix4fv(locNormalM, 1, GL_FALSE, &normalMatrix[0][0]); glUniformMatrix4fv(locLightPos, 1, GL_FALSE, &lightPos[0]); glUseProgram(shaderProgram); } void renderHeightMap() { glEnable(GL_PRIMITIVE_RESTART); glPrimitiveRestartIndex(gameMap->getHeightMapSize()); // 1rst attribute buffer : vertices glEnableVertexAttribArray(0); glBindBuffer(GL_ARRAY_BUFFER, hmVBO); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0); // NEW below glEnableVertexAttribArray(1); glBindBuffer(GL_ARRAY_BUFFER, hmNormals); glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, (void*)0); glDrawElements(GL_TRIANGLE_STRIP, indices, GL_UNSIGNED_INT, 0); GLenum err; while ((err = glGetError()) != GL_NO_ERROR) { std::cerr << "OpenGL error: " << err << std::endl; } glEnableVertexAttribArray(1); // NEW glDisableVertexAttribArray(0); glDisable(GL_PRIMITIVE_RESTART); }; protected: Map* gameMap; Camera* camera; glm::mat4 MVP; GLuint shaderProgram; GLuint locMVP; GLuint locMV; GLuint locNormalM; GLuint locLightPos; GLuint hmVAO; GLuint hmVBO; GLuint hmVBOindices; GLuint hmNormals; // NEW long indices; }; #endif // DEPENDENTIA_MAPRENDERER_HPP #version 330 in vec4 vVertex; // in vec3 vNormal; uniform mat4 mvpMatrix; uniform mat4 mvMatrix; uniform mat3 normalMatrix; uniform vec3 vLightPosition; smooth out vec3 vVaryingNormal; smooth out vec3 vVaryingLightDir; void main(){ /*vVaryingNormal = normalMatrix * gl_Normal;*/ vec4 vPosition4 = mvMatrix * vVertex; vec3 vPosition3 = vPosition4.xyz / vPosition4.w; vVaryingLightDir = normalize(vLightPosition - vPosition3); gl_Position = mvpMatrix * vVertex; } #version 330 out vec3 vFragColor; void main(){ vFragColor = vec3(0.31640625,0.66796875,0.234375); }
  3. Hi, I wrote heightmap rendering and I wanted to move it to external class. Unfortunately, while refactoring (I don't know when exactly, it would be much easier to fix then) application has stopped working, I mean it renders nothing.   It seems that I changed correct order of function calls. I went through the code several times, but everything looks fine for me.   Could you look at it? I think code is readable: #ifndef DEPENDENTIA_TESTSTATE_HPP #define DEPENDENTIA_TESTSTATE_HPP #include <glm/gtc/matrix_transform.hpp> #include "../parrot/GameState.hpp" #include "../Camera.hpp" #include "../loadShaders.hpp" #include "Map.hpp" #include "MapRenderer.hpp" #include <iostream> class TestState : public Parrot::GameState { public: void init(); void cleanup(); virtual void update(Parrot::Engine * engine, double frameTime, double currentTime); virtual void render(Parrot::Engine * engine); static TestState & getInstance() { static TestState instance; return instance; } private: TestState() {}; private: GLuint programID; glm::mat4 VP; GLuint matrixID; Camera* camera; glm::mat4 projection; Map* gameMap; MapRenderer* gameMapRenderer; }; void TestState::init() { // Shader programID = loadShaders("shaders/sample.vs", "shaders/sample.fs"); // Projections projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.0f); camera = new Camera( glm::vec3(-10, 0, -10), glm::vec3(10, 0, 10), 3, 100, 0, 360, 10, 80 ); gameMap = new Map(3, 3); gameMapRenderer = new MapRenderer(gameMap, camera); CameraCommand cc; cc.aim = glm::vec3(0,0,0); cc.distance = 5; cc.rotationX = 0; cc.rotationY = 40; camera->updateCamera(cc); matrixID = glGetUniformLocation(programID, "MVP"); } void TestState::cleanup() { glDeleteProgram(programID); delete gameMapRenderer; delete camera; delete gameMap; } void TestState::update(Parrot::Engine * engine, double frameTime, double currentTime) { camera->update(frameTime); } void TestState::render(Parrot::Engine * engine) { VP = projection * camera->getViewMatrix(); glUniformMatrix4fv(matrixID, 1, GL_FALSE, &VP[0][0]); glUseProgram(programID); gameMapRenderer->render(); } #endif // DEPENDENTIA_TESTSTATE_HPP Here's the class: #ifndef DEPENDENTIA_MAPRENDERER_HPP #define DEPENDENTIA_MAPRENDERER_HPP #include "Map.hpp" #include <iostream> class MapRenderer { public: MapRenderer(Map* gameMap, Camera* camera) : gameMap(gameMap), camera(camera) { prepareOGLBuffers(); prepareIndicesData(); } void render() { /* if (gameMap has changed) */ generateHeightMapVA(); glClearColor(0.234357f, 0.472656f, 0.667968f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); // Temporary wireframe renderHeightMap(); }; ~MapRenderer() { glDeleteBuffers(1, &hmVBOindices); glDeleteBuffers(1, &hmVBO); glDeleteVertexArrays(1, &hmVAO); } protected: void prepareOGLBuffers() { glGenVertexArrays(1, &hmVAO); glGenBuffers(1, &hmVBO); glGenBuffers(1, &hmVBOindices); glBindVertexArray(hmVAO); glBindBuffer(GL_ARRAY_BUFFER, hmVBO); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, hmVBOindices); } void prepareIndicesData() { hmIndices = new int[27] { 0, 4, 1, 5, 2, 6, 3, 7, 16, // First row, then restart 4, 8, 5, 9, 6, 10, 7, 11, 16, // Second row, then restart 8, 12, 9, 13, 10, 14, 11, 15, 16 // Third row, no restart }; glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(hmIndices), hmIndices, GL_STATIC_DRAW); delete[] hmIndices; } void generateHeightMapVA() { glm::vec3* heightMapVertices = new glm::vec3[gameMap->getHeightMapSize()]; for (int i=0; i<gameMap->getHeightMapSize(); i++) { float x = float(i % (gameMap->getSizeX()+1)), z = float(i / (gameMap->getSizeX()+1)); heightMapVertices[i] = glm::vec3( -0.5 + x / float(gameMap->getSizeX()), 0.125 * (float) gameMap->getHeightAt(i), -0.5 + z / float(gameMap->getSizeY()) ); } glBufferData(GL_ARRAY_BUFFER, sizeof(glm::vec3) * gameMap->getHeightMapSize(), heightMapVertices, GL_STATIC_DRAW); delete[] heightMapVertices; } void renderHeightMap() { glEnable(GL_PRIMITIVE_RESTART); glPrimitiveRestartIndex(gameMap->getHeightMapSize()); // 1rst attribute buffer : vertices glEnableVertexAttribArray(0); glBindBuffer(GL_ARRAY_BUFFER, hmVBO); glVertexAttribPointer( 0, // attribute 0. No particular reason for 0, but must match the layout in the shader. 3, // size GL_FLOAT, // type GL_FALSE, // normalized? 0, // stride (void*)0 // array buffer offset ); glDrawElements(GL_TRIANGLE_STRIP, 4*(4-1)*2+4-1, GL_UNSIGNED_INT, 0); // HM_SIZE_X*(HM_SIZE_Y-1)*2+HM_SIZE_Y-1 glDisableVertexAttribArray(0); glDisable(GL_PRIMITIVE_RESTART); }; protected: Map* gameMap; Camera* camera; GLuint hmVAO; GLuint hmVBO; GLuint hmVBOindices; int* hmIndices; }; #endif // DEPENDENTIA_MAPRENDERER_HPP I will provide further information if needed.
  4. Works like a charm! Thank you for your help (and time) :)
  5. Hi guys, I wanted to try Code::Blocks instead of Visual Studio, but have some problems with compiling Hello World. Using Windows 8.1, Code::Blocks 13.12 (MinGW 32), GLFW 3.0.4   I have downloaded 32 precompiled GLFW for MinGW, pasted sample code (http://www.glfw.org/documentation.html) and set up build options.   Here is my log build:   -------------- Build: debug in dependentia (compiler: GNU GCC Compiler)--------------- mingw32-g++.exe -LGLFW3\lib-mingw -o bin\debug\dependentia.exe obj\debug\src\main.o GLFW3\lib-mingw\libglfw3.a GLFW3\lib-mingw\glfw3dll.a GLFW3\lib-mingw\libglfw3.a(window.c.obj):window.c:(.text+0x5fa): undefined reference to `glClear@4' GLFW3\lib-mingw\libglfw3.a(context.c.obj):context.c:(.text+0x41): undefined reference to `glGetIntegerv@8' GLFW3\lib-mingw\libglfw3.a(context.c.obj):context.c:(.text+0xb8): undefined reference to `glGetString@4' GLFW3\lib-mingw\libglfw3.a(context.c.obj):context.c:(.text+0x608): undefined reference to `glGetString@4' GLFW3\lib-mingw\libglfw3.a(context.c.obj):context.c:(.text+0x76f): undefined reference to `glGetIntegerv@8' GLFW3\lib-mingw\libglfw3.a(context.c.obj):context.c:(.text+0x7b9): undefined reference to `glGetIntegerv@8' GLFW3\lib-mingw\libglfw3.a(context.c.obj):context.c:(.text+0x856): undefined reference to `glGetIntegerv@8' GLFW3\lib-mingw\libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0x30a): undefined reference to `_imp__CreateDCW@16' GLFW3\lib-mingw\libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0x356): undefined reference to `_imp__GetDeviceCaps@8' GLFW3\lib-mingw\libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0x3a2): undefined reference to `_imp__DeleteDC@4' GLFW3\lib-mingw\libglfw3.a(win32_gamma.c.obj):win32_gamma.c:(.text+0x7b): undefined reference to `_imp__CreateDCW@16' GLFW3\lib-mingw\libglfw3.a(win32_gamma.c.obj):win32_gamma.c:(.text+0x91): undefined reference to `_imp__GetDeviceGammaRamp@8' GLFW3\lib-mingw\libglfw3.a(win32_gamma.c.obj):win32_gamma.c:(.text+0x9d): undefined reference to `_imp__DeleteDC@4' GLFW3\lib-mingw\libglfw3.a(win32_gamma.c.obj):win32_gamma.c:(.text+0x35b): undefined reference to `_imp__CreateDCW@16' GLFW3\lib-mingw\libglfw3.a(win32_gamma.c.obj):win32_gamma.c:(.text+0x36d): undefined reference to `_imp__SetDeviceGammaRamp@8' GLFW3\lib-mingw\libglfw3.a(win32_gamma.c.obj):win32_gamma.c:(.text+0x379): undefined reference to `_imp__DeleteDC@4' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x13b): undefined reference to `_imp__DescribePixelFormat@16' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x926): undefined reference to `_imp__DescribePixelFormat@16' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0xa5e): undefined reference to `_imp__DescribePixelFormat@16' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0xa80): undefined reference to `_imp__SetPixelFormat@12' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0xbaf): undefined reference to `_imp__wglMakeCurrent@8' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0xbca): undefined reference to `_imp__wglGetProcAddress@4' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x10d1): undefined reference to `_imp__wglCreateContext@4' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x10ff): undefined reference to `_imp__wglShareLists@8' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x1337): undefined reference to `_imp__wglDeleteContext@4' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x14d1): undefined reference to `_imp__wglMakeCurrent@8' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x1503): undefined reference to `_imp__wglMakeCurrent@8' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x1542): undefined reference to `_imp__SwapBuffers@4' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x165d): undefined reference to `_imp__wglGetProcAddress@4' collect2.exe: error: ld returned 1 exit status Process terminated with status 1 (0 minute(s), 0 second(s)) 29 error(s), 0 warning(s) (0 minute(s), 0 second(s))   What are further steps I can take? I will provide more information if needed.
  6. Hi guys, I wanted to try Code::Blocks instead of Visual Studio, but have some problems with compiling Hello World. Using Windows 8.1, Code::Blocks 13.12 (MinGW 32), GLFW 3.0.4   I have downloaded 32 precompiled GLFW for MinGW, pasted sample code (http://www.glfw.org/documentation.html) and set up build options.   Here is my log build:   -------------- Build: debug in dependentia (compiler: GNU GCC Compiler)--------------- mingw32-g++.exe -LGLFW3\lib-mingw -o bin\debug\dependentia.exe obj\debug\src\main.o GLFW3\lib-mingw\libglfw3.a GLFW3\lib-mingw\glfw3dll.a GLFW3\lib-mingw\libglfw3.a(window.c.obj):window.c:(.text+0x5fa): undefined reference to `glClear@4' GLFW3\lib-mingw\libglfw3.a(context.c.obj):context.c:(.text+0x41): undefined reference to `glGetIntegerv@8' GLFW3\lib-mingw\libglfw3.a(context.c.obj):context.c:(.text+0xb8): undefined reference to `glGetString@4' GLFW3\lib-mingw\libglfw3.a(context.c.obj):context.c:(.text+0x608): undefined reference to `glGetString@4' GLFW3\lib-mingw\libglfw3.a(context.c.obj):context.c:(.text+0x76f): undefined reference to `glGetIntegerv@8' GLFW3\lib-mingw\libglfw3.a(context.c.obj):context.c:(.text+0x7b9): undefined reference to `glGetIntegerv@8' GLFW3\lib-mingw\libglfw3.a(context.c.obj):context.c:(.text+0x856): undefined reference to `glGetIntegerv@8' GLFW3\lib-mingw\libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0x30a): undefined reference to `_imp__CreateDCW@16' GLFW3\lib-mingw\libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0x356): undefined reference to `_imp__GetDeviceCaps@8' GLFW3\lib-mingw\libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0x3a2): undefined reference to `_imp__DeleteDC@4' GLFW3\lib-mingw\libglfw3.a(win32_gamma.c.obj):win32_gamma.c:(.text+0x7b): undefined reference to `_imp__CreateDCW@16' GLFW3\lib-mingw\libglfw3.a(win32_gamma.c.obj):win32_gamma.c:(.text+0x91): undefined reference to `_imp__GetDeviceGammaRamp@8' GLFW3\lib-mingw\libglfw3.a(win32_gamma.c.obj):win32_gamma.c:(.text+0x9d): undefined reference to `_imp__DeleteDC@4' GLFW3\lib-mingw\libglfw3.a(win32_gamma.c.obj):win32_gamma.c:(.text+0x35b): undefined reference to `_imp__CreateDCW@16' GLFW3\lib-mingw\libglfw3.a(win32_gamma.c.obj):win32_gamma.c:(.text+0x36d): undefined reference to `_imp__SetDeviceGammaRamp@8' GLFW3\lib-mingw\libglfw3.a(win32_gamma.c.obj):win32_gamma.c:(.text+0x379): undefined reference to `_imp__DeleteDC@4' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x13b): undefined reference to `_imp__DescribePixelFormat@16' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x926): undefined reference to `_imp__DescribePixelFormat@16' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0xa5e): undefined reference to `_imp__DescribePixelFormat@16' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0xa80): undefined reference to `_imp__SetPixelFormat@12' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0xbaf): undefined reference to `_imp__wglMakeCurrent@8' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0xbca): undefined reference to `_imp__wglGetProcAddress@4' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x10d1): undefined reference to `_imp__wglCreateContext@4' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x10ff): undefined reference to `_imp__wglShareLists@8' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x1337): undefined reference to `_imp__wglDeleteContext@4' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x14d1): undefined reference to `_imp__wglMakeCurrent@8' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x1503): undefined reference to `_imp__wglMakeCurrent@8' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x1542): undefined reference to `_imp__SwapBuffers@4' GLFW3\lib-mingw\libglfw3.a(wgl_context.c.obj):wgl_context.c:(.text+0x165d): undefined reference to `_imp__wglGetProcAddress@4' collect2.exe: error: ld returned 1 exit status Process terminated with status 1 (0 minute(s), 0 second(s)) 29 error(s), 0 warning(s) (0 minute(s), 0 second(s))   What are further steps I can take? I will provide more information if needed.
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!