需要使用 的类库:
GLFW GLEW GLUT...
-
- 以下使用 GLFW&GLEW,Windows下使用 VS的包管理器 可以找到这两个包,
- 项目 > 管理NuGet程序包
- 以下使用 GLFW&GLEW,Windows下使用 VS的包管理器 可以找到这两个包,
-
- 安装后,在项目目录package里可以找到对应类库
Windows平台配置:
- 安装好GLEW,GLFW后,packages中包含可能包含全部版本的类库,请选择正确版本
-
- GLEW版本不限,更高级的版本,支持的OpenGL版本也就越高。
-
- GLFW根据平台不同,划分出了适配不同平台的版本,所以要选择正确的平台。
2. Windows下开发OpenGL渲染器 推荐使用VS
3. VS开发可以使用 属性表(.props) 配置项目环境:
-
- 视图 > 其他窗口 > 属性管理器
-
-
- 展开项目属性列表后,有4个筛选器,分别对应四种调试模式下的 属性表单
-
-
-
- 可以选择第一个筛选器,右键选择添加 > 新项目属性表
-
-
-
- 双击新建的属性表,可以配置该属性表
-
-
- 将头文件,置入:
-
-
- 属性表文件(.props) > VC++目录 > 包含目录
-
-
- 针对静态链接库,需要设置以下两项:
-
-
- 静态库的路径
- 属性表文件(.props) > VC++目录 > 库目录
- 静态库的路径
-
-
-
- 需要使用的静态库文件
- 属性表文件(.props) > 链接器 > 输入 > 附加依赖项
- 需要使用的静态库文件
-
-
- 针对动态链接库,有以下两种情况:
-
-
- 此动态链接库拥有 函数列表(.lib)
- 将函数列表(.lib)加入到项目。
- 将动态链接库置入:可执行程序生成路径,或环境变量path指定的位置。
- 此动态链接库拥有 函数列表(.lib)
-
-
-
- 此动态链接库没有 函数列表(.lib)
- 将动态链接库置入:可执行程序生成路径,或环境变量path指定的位置。
- 此动态链接库没有 函数列表(.lib)
-
Windows平台测试:
1. 新建项目 > 配置项目环境 > 添加main.cpp
main.cpp:
#include<iostream> #include<glew.h> #include<glfw3.h> void framebuffer_size_callback(GLFWwindow* window, int width, int height); void processInput(GLFWwindow *window); int main(int _Argc, char** argv) { // glfw: initialize and configure // ------------------------------ glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); #ifdef __APPLE__ glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); #endif // glfw window creation // -------------------- GLFWwindow* window = glfwCreateWindow(1000,700, "LearnOpenGL", NULL, NULL); if (window == NULL) { std::cout << "Failed to create GLFW window" << std::endl; glfwTerminate(); return -1; } glfwMakeContextCurrent(window); glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);// Init GLEW to manage OpenglFuncptr(Because of GLEW,we can use OpenglFunc) glewExperimental = GL_TRUE; if (glewInit() != GLEW_OK) { std::cout << "Failed to initialize GLEW" << std::endl; return -1; } // configure global opengl state // ----------------------------- glEnable(GL_DEPTH_TEST); while (!glfwWindowShouldClose(window)) { // input // ----- processInput(window); // render // ------ glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.) // ------------------------------------------------------------------------------- glfwSwapBuffers(window); glfwPollEvents(); } // glfw: terminate, clearing all previously allocated GLFW resources. // ------------------------------------------------------------------ glfwTerminate(); return 0; } // process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly // --------------------------------------------------------------------------------------------------------- void processInput(GLFWwindow *window) { if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) glfwSetWindowShouldClose(window, true); } // glfw: whenever the window size changed (by OS or user resize) this callback function executes // --------------------------------------------------------------------------------------------- void framebuffer_size_callback(GLFWwindow* window, int width, int height) { // make sure the viewport matches the new window dimensions; note that width and // height will be significantly larger than specified on retina displays. glViewport(0, 0, width, height); }
2. 在函数 glClearColor(r, g, b, a) 中,改变颜色,如果颜色显示正常,则测试通过,按Esc可以退出窗口。