最近在重新溫習openGL的相關知識,在按照LearnOpenGL配置環境的時候遇到了一些問題,現在把相關問題總結一下,防止以後忘了。
GLFW按照文檔給的鏈接下載源碼編譯即可,將編譯好的glew3.lib和include的拷貝到相應文件夾下;
GLEW由於編譯總是出錯,於是就直接下載了二進制文件使用了。
接下來就是測試源碼的時候了,LearnOpenGL中要求新建空項目,但是測試中需要用到std庫,在包含“stdafx.h”後出現很多問題,於是就放棄了新建空項目,改爲新建win32控制檯應用程序,控制檯應用程序的好處是,他可以爲我們配置“stdafx.h”所需的環境。
接下來有出現了其他問題,解決方法如下:
1、error LNK2019: 無法解析的外部符號 __imp__glViewport@16,該符號在函數 _main 中被引用
解決方式在輸入中添加opengl32.lib,之後即可正常運行了。
順便貼出測試代碼:
// OpenGLStudy1.cpp : 定義控制檯應用程序的入口點。
//
#include "stdafx.h"
#include <iostream>
// GLEW
#define GLEW_STATIC
#include <GLEW/GL/glew.h>
// GLFW
#include <GLFW/glfw3.h>
int main()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", nullptr, nullptr);
if (window == nullptr)
{
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glewExperimental = GL_TRUE;
if (glewInit() != GLEW_OK)
{
std::cout << "Failed to initialize GLEW" << std::endl;
return -1;
}
int width, height;
glfwGetFramebufferSize(window, &width, &height);
glViewport(0, 0, width, height);
while (!glfwWindowShouldClose(window))
{
glfwPollEvents();
glfwSwapBuffers(window);
}
glfwTerminate();
return 0;
}