当前位置: 首页 > 编程笔记 >

使用OpenGL创建窗口 C ++

范浩荡
2023-03-14
本文向大家介绍使用OpenGL创建窗口 C ++,包括了使用OpenGL创建窗口 C ++的使用技巧和注意事项,需要的朋友参考一下

在OpenGL上制作任何程序的基本步骤是创建一个窗口,所有代码都将在其中工作,因此我们如何创建它?在您的机器上安装OpenGL库之后(Ubuntu的OpenGLhtml" target="_blank">安装指南:如何在Ubuntu中安装OpenGL),我们可以开始了。

首先让我们了解如何构建OpenGL程序吗?

  1. 最好将所有初始化和相关的一次性参数设置放在一起functioninit()

  2. 要在用户定义的函数中绘制(显示)的图片的几何描述,将在GLUT函数中引用glutDisplayFunc()

  3. 主要功能将包含GLUT功能,用于设置显示窗口和获取图像屏幕。

程序:

让我们动手处理代码:

#include<GL/freeglut.h>

//创建一个空寡妇的程序
void init(){
	glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);	//C行
	glutInitWindowSize(640,480);
	glutInitWindowPosition(1000,200);
	glutCreateWindow("Simple Window");
}

void display(){
	glClearColor(1.0,1.0,1.0,0.0);
	glClear(GL_COLOR_BUFFER_BIT);
	//gluOrtho2D(0.0,100.0,0,100.0); 
	glFlush();
}

int main(int argc,char **argv)
{
	glutInit(&argc,argv);			//A线
	init();					//B行
	glutDisplayFunc(display);
	glutMainLoop();
	
	return 0;
}

输出结果

使用OpenGL创建窗口  C ++

说明:

#include <GL / freeglut.h>,我们在程序中使用了GL / freeglut库,几乎在所有程序中都可以找到它。

在A行中,我们将其称为glutInit(&argv,argv)是因为它初始化了OpenGL实用工具包(GLUT),因此必须在开始时完成,并且是必须执行的步骤之一。

在B行中,我们将用户定义的函数调用为init()。现在我们了解了每行的含义,glutInitDisplayMode()用于选择缓冲选项和颜色模式选择。在这里,我们使用GLUT_SINGLE进行窗口显示,这意味着一个缓冲区将用于一种颜色,我们可以使用随后的两个或三个缓冲区模式来增加颜色的数量,我们使用GLUT_RGB意味着我们将使用红色,绿色和蓝色作为主要颜色颜色。glutWindowSize()用于定义要创建的窗口的大小。glutWindowPosition()用于定义屏幕上窗口的起点(它从角的左上角开始,即左1000像素,下200像素)。Glutcreatewindow() 负责在屏幕上创建窗口,我们也可以传递一个字符串参数,该参数在新创建的窗口顶部显示该字符串。

glutDisplayFunc()它将函数的名称作为其参数,并将其显示在屏幕上(尽管我们的displays()函数中没有任何要显示的内容,它将不显示任何内容)。

对于背景颜色,由于背景的默认颜色是黑色,要对其进行更改,我们使用两个函数,一个是glClearColor(r,g,b,a),该函数接受4个参数,分别用于红色,绿色,蓝色和Alpha值。它仅接受这三种颜色,因为我们在C行中定义了将仅使用该一种颜色,并且在0和1之间传递了一个值(浮点数)以定义其组成,结果颜色将是背景色,Alpha值是用于确定两种重叠颜色的结果。

其中a = 0是透明对象,a = 1是不透明对象

但是简单地使用glClearColor()不会改变背景颜色,可以肯定会设置背景但不会显示;除非我们使用glClear(GL_COLOR_BUFFER_BIT),否则它将激活图形处理器的颜色处理,并且分配的颜色将显示在窗口上。

gluOrtho2d()以四个浮点数作为参数,它们是Xmin,Xmax,Ymin和Ymax,它们定义了窗口内的坐标系。最后,我们使用glFlush()哪个将所有内容刷新到屏幕上。

glutMainLoop()是必须使用的函数,因为它负责将显示保持在屏幕上,否则程序将在没有人眼注意的情况下结束。

 类似资料:
  • 我设置了一个最小应用程序,用GLFW3打开一个空白窗口: 它会导致以下错误: GLFW错误65540:上下文配置文件仅存在于OpenGL 3.2及更高版本 未能打开GLFW窗口... 该应用程序使用Bumblebee的optirun在Linux上运行。当使用freeglut而不是GLFW时,代码可以工作。导致错误的代码有什么问题?

  • 译注 注意,由于作者对教程做出了更新,之前本节使用的是GLEW库,但现在改为了使用GLAD库,关于GLEW配置的部分现在已经被修改,但我仍决定将这部分教程保留起来,放到一个历史存档中,如果有需要的话可以到这里来查看。 在我们画出出色的效果之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样的,OpenGL有目的地从这些操作抽象(

  • 我通过GLX在Linux中编写了一个OpenGL应用程序。它使用双缓冲与glXSwapBuffers和同步到VBlank设置通过NVIDIA X服务器设置设置。我正在使用Compiz,并且可以平滑地移动窗口并且没有撕裂(在Compiz设置中启用了同步到VBlank)。但当我 > 尝试移动 OpenGL 窗口或调整其大小,或 通过OpenGL窗口占用的区域移动其他窗口 系统断断续续,停顿3-4秒。将

  • 通过对第 5 章的学习,我们已经了解了 Qt Designer 及其组件的基本用法。Qt Designer 提供了许多预定义模板,使用它可以创建多种不同的用户界面。使用 Qt Designer 创建主窗口是非常快捷的,使用其中的 【templates\forms】→【Main Window】就可以完成主窗口类型应用程序界面的设计,主要包括菜单栏、工具栏以及锚接窗口部件的 设定,这其中锚接窗口部件不

  • pre { white-space: pre-wrap; } 创建一个窗口(window)非常简单,我们创建一个 DIV 标记: <div id="win" title="My Window">     Some Content. </div> 现在运行测试页面,您会看见一个窗口(window)显示在您的屏幕上。我们不需要写任何的 javascript 代码。 如果您希望创建一个隐藏的窗口(w

  • E/AndroidRuntime:致命异常:main process:com.luteraa.luteraaesports,pid:6355 java.lang.nullpointerException:试图在com.luteraa.luteraaesports.bgmicategoryAdapter.OpenDialog(bgmicategoryAdapter.java.access$000(b