OpenGL创建一个窗口
#include<iostream>
//opengl调用的glew分为动态库和静态库,当你在链接器中添加的是glew32s.lib时,说明你编译的是静态库。
//此时你要在#include <GL/glew.h>前添加 #define GLEW_STATIC
#define GLEW_STATIC //glew32s.lib
#include<GL\glew.h>
#include<GLFW\glfw3.h>
int main()
{
//GLFW窗口主函数
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); //主版本号
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); //次版本号
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
///---------------------------------
//OpenGL GLFW Window
GLFWwindow *window = glfwCreateWindow(800, 600, "openglWindow", NULL, NULL);
if (window == NULL)
{
std::cout << "Failed to create GLFW window!" << std::endl;
glfwTerminate(); //终止glfw
return -1;
}
glfwMakeContextCurrent(window); //创建成功,就使用这个窗口
//Init GLEW
glewExperimental = true;
if (glewInit() != GLEW_OK)
{
std::cout << "Failed to Init GLEW" << std::endl;
glfwTerminate();
return -1;
}
glViewport(0, 0, 800, 600); //渲染窗口的大小(即显示图的窗口大小)
while (!glfwWindowShouldClose(window))
{
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
程序运行结果:
执行按键功能:
自定义一个功能输入函数processInput,然后在while中调用它。
while (!glfwWindowShouldClose(window))
{
processInput(window); //自己定义的函数(当按下某个键的时候,窗口执行对应的功能)
glfwSwapBuffers(window);
glfwPollEvents();
}
完整代码:
#include<iostream>
//opengl调用的glew分为动态库和静态库,当你在链接器中添加的是glew32s.lib时,说明你编译的是静态库。
//此时你要在#include <GL/glew.h>前添加 #define GLEW_STATIC
#define GLEW_STATIC //glew32s.lib
#include<GL\glew.h>
#include<GLFW\glfw3.h>
//当按下escap键的时候,执行窗口关闭功能
void processInput(GLFWwindow* window)
{
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
{
glfwSetWindowShouldClose(window, true);
}
}
int main()
{
//GLFW窗口主函数
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); //主版本号
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); //次版本号
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
///---------------------------------
//OpenGL GLFW Window
GLFWwindow *window = glfwCreateWindow(800, 600, "openglWindow", NULL, NULL);
if (window == NULL)
{
std::cout << "Failed to create GLFW window!" << std::endl;
glfwTerminate(); //终止glfw
return -1;
}
glfwMakeContextCurrent(window); //创建成功,就使用这个窗口
//Init GLEW
glewExperimental = true;
if (glewInit() != GLEW_OK)
{
std::cout << "Failed to Init GLEW" << std::endl;
glfwTerminate();
return -1;
}
glViewport(0, 0, 800, 600); //渲染窗口的大小(即显示图的窗口大小)
while (!glfwWindowShouldClose(window))
{
processInput(window); //自己定义的函数(当按下某个键的时候,窗口执行对应的功能)
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
改变窗口颜色:
在while中加入代码:
while (!glfwWindowShouldClose(window))
{
processInput(window); //自己定义的函数(当按下某个键的时候,窗口执行对应的功能)
glClearColor(0.2f, 0.5f, 0.5f, 1.0f); //改变窗口的颜色,前三个值为rgb,后面的值为透明度
glClear(GL_COLOR_BUFFER_BIT); //清除原来颜色
glfwSwapBuffers(window);
glfwPollEvents();
}
完整代码:
#include<iostream>
//opengl调用的glew分为动态库和静态库,当你在链接器中添加的是glew32s.lib时,说明你编译的是静态库。
//此时你要在#include <GL/glew.h>前添加 #define GLEW_STATIC
#define GLEW_STATIC //glew32s.lib
#include<GL\glew.h>
#include<GLFW\glfw3.h>
//当按下escap键的时候,执行窗口关闭功能
void processInput(GLFWwindow* window)
{
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
{
glfwSetWindowShouldClose(window, true);
}
}
int main()
{
//GLFW窗口主函数
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); //主版本号
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); //次版本号
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
///---------------------------------
//OpenGL GLFW Window
GLFWwindow *window = glfwCreateWindow(800, 600, "openglWindow", NULL, NULL);
if (window == NULL)
{
std::cout << "Failed to create GLFW window!" << std::endl;
glfwTerminate(); //终止glfw
return -1;
}
glfwMakeContextCurrent(window); //创建成功,就使用这个窗口
//Init GLEW
glewExperimental = true;
if (glewInit() != GLEW_OK)
{
std::cout << "Failed to Init GLEW" << std::endl;
glfwTerminate();
return -1;
}
glViewport(0, 0, 800, 600); //渲染窗口的大小(即显示图的窗口大小)
while (!glfwWindowShouldClose(window))
{
processInput(window); //自己定义的函数(当按下某个键的时候,窗口执行对应的功能)
glClearColor(0.2f, 0.5f, 0.5f, 1.0f); //改变窗口的颜色,前三个值为rgb,后面的值为透明度
glClear(GL_COLOR_BUFFER_BIT); //清除原来颜色
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
程序执行结果:窗口变成蓝色