【初窺圖形編程】序章:什麼是Computer graphics?

寫在前面:今天是2月10號,本以爲今天會出初試成績,結果還是推遲到了2月20號,意料之中,心情複雜,度日如年。疫情使得在家荒廢了很久,想想還是得幹些什麼。逛b站的時候看見有圖形編程這門課,也一直想學習圖形學,正好趁這段時間學習學習。不論考不考得上,學習總歸是不會錯的。寫此博客,一來幫助我鞏固知識點,二來梳理一下我對這門技術的理解。

一、Computer Graphics

1、什麼是計算機圖形學?

計算機圖形學(Computer graphics簡稱CG),是一種使用數學算法將二維或三維圖形轉化爲計算機顯示器的柵格形式的科學。簡單地說,計算機圖形學的主要研究內容就是研究如何在計算機中表示圖形、以及利用計算機進行圖形的計算、處理和顯示的相關原理算法。——百度百科

我個人理解是,將虛擬的三維世界繪製成二維圖像並展現在計算機顯示器上的一門學科。

2、計算機圖形學有哪些內容?

計算機圖形學涉獵很廣,但主要研究三個部分:

建模(modeling):顧名思義,建造三維模型,將模型的組成(一般是頂點和麪片信息)記錄下來,形成模型文件(常見如.obj/.fbx/.maya)

渲染(redering):將三維物體繪製在屏幕上,屏幕由許多柵格(像素點)組成,即決定每個像素點爲什麼顏色。(感覺自己目前對渲染理解還有點淺顯)

動畫(animation):即模擬三維物體的運動,如布料運動和流體運動等。

二、Graphics Processing Unit

1、什麼是GPU?

GPU全稱Graphics processing unit,我們很容易聯想到cpu(computer processing unit)。學計算機的都知道cpu的地位,自馮諾依曼機起,cpu就承擔着整個計算機的運算功能。而gpu則是承擔更加特殊運算功能的“cpu”(我自己的理解),即專門處理圖形流水線運算的運算器。當然,隨着時代的發展,現在已經有許多不僅僅是用來繪製圖形的gpu。

三、圖形流水線

1、計算機是怎樣繪製三維圖形的?

計算機繪製圖形,按照如圖所示的步驟:(圖片取自北京林業大學楊剛教授的課件,如侵權請聯繫我刪除)

vertex shader:對三維模型的頂點進行變換(如平移、旋轉、放縮、投影等)使其變爲二維圖形,可編程控制頂點屬性。

geometry shader:可以在cpu沒有傳輸模型信息的情況下,生成一些新的頂點和麪片。

rasterization:光柵化,計算二維圖形所覆蓋的像素。

fragment shader:對像素進行處理(如霧效、深度測試等),處理後存放入幀緩存區。

四、配置freeglut

這篇大佬的博客講的很清楚,我就不再贅述:

https://blog.csdn.net/weixin_42078760/article/details/80487253

五、Hello OpenGL

創建c++程序,運行如下代碼

#include "stdio.h"
#include <GL\glut.h>


void myDisplay(void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
	glFlush();
}

int main(int argc, char *argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
	glutInitWindowPosition(300, 300);
	glutInitWindowSize(400, 400);
	glutCreateWindow("Hello OpenGL!");
	glutDisplayFunc(&myDisplay);
	glutMainLoop();
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章