一个程序员应该怎样学会编写带GUI的程序

文章来源:一氧化碳中毒   发布时间:2021-9-27 14:29:31   点击数:
  北京酒渣鼻哪家医院好 https://m-mip.39.net/baidianfeng/mipso_8598818.html
这是一个关于GUI如何绘制,以及是怎么绘制的问题。什么是GUI?

图形用户界面,英文为GraphicalUserInterface,简写为GUI。

众说纷纭,有人列举了许多实现GUI界面的类库,例如C++的QT、MFC,Python的Tkinter等。但是这些类库是如何显示的呢?归根结底,它们都是在计算机屏幕上显示信息,那么计算机是如何绘制屏幕的呢?

计算机是如何绘制屏幕的?

计算机把内存中的内容输出到屏幕上,这个操作叫渲染。现代计算机有一个专门的关键部分,用于完成渲染工作,它就是GPU(GraphicsProcessingUnit)。

我们在屏幕上看到的动画或视频,是单一的一帧一帧画面重复绘制的结果。每一帧渲染主要分为六步:

顶点着色器(VertexShader):顶点着色器主要的目的是把3D坐标转为另一种3D坐标。

形状装配(ShapeAssembly):将所有的点装配成指定图元的形状。

几何着色器(GeometryShader):把图元形式的一系列顶点的集合作为输入,通过产生新顶点构造出新的图元来生成其他形状。

光栅化(Rasterization):该阶段会把图元映射为最终屏幕上相应的像素。

片段着色器(FragmentShader):对输入片段进行裁切(Clipping)。裁切会丢弃超出视图以外的所有像素,用来提升渲染效率。

测试与混合(TestsandBlending):该阶段还会检查alpha值。

完全理解这六个步骤稍微有点困难。大概可以这么理解:CPU送给GPU需要渲染的画面数据,是立体的,就像重叠的窗口一样,是一个立体、有重叠和覆盖性质的内容;GPU收到这些数据以后,先建点连线,构建3D图形,然后在屏幕上投影,将3D图形转化为2D图形,最后裁掉屏幕以外的部分,将像素绘制出来。

GPU本质上绘制的是像素。屏幕上每个像素可以看作是一个带颜色控制的小灯泡,GPU频繁控制这些灯泡的明灭暗淡,以此完成复杂的画面渲染。

程序是如何调用GPU的?

既然屏幕绘制工作是GPU完成的,那么在系统里,软件是如何调用GPU的呢?

无论是什么系统,软件是不能直接控制GPU的。软件向系统发出控制请求,系统通过设备驱动控制特定的计算机设备。驱动全称是设备驱动程序,是添加到操作系统中的特殊程序。驱动中包含有关硬件设备信息,以及设备控制指令。厂商生产了硬件设备,只有厂商自己发布的设备驱动才知道如何控制设备。

计算机或其它程序软件没有办法直接控制某个驱动,只有设备驱动可以。驱动在计算机中的地位,就好比归附的山寨军队的山大王。要指挥山寨,必须通过山大王发号施令,直接安排是不好使的。

图源:snappygoat.

转载请注明:http://www.lwblm.com/bytj/12475.html
  • 上一篇文章:
  • 下一篇文章: