1. 程式人生 > >C++ opengl 矩陣的壓棧與出棧

C++ opengl 矩陣的壓棧與出棧

矩陣的壓棧與出棧

讓兩個重合的三角形,分開

程式執行截圖如下:

虛擬碼如下:

void Init() {
	//設定當前矩陣
	glMatrixMode(GL_PROJECTION);	//設定為投影矩陣(對矩陣造成影響的程式碼,都會影響當前矩陣)
	
	//第一個引數是垂直方面的視角,第二個是寬和高的比,第三個是最近可以看到的距離,第四個是最遠距離
	gluPerspective(50.0f, 800.0f / 600.0f, 0.1f, 1000.0f);
	glMatrixMode(GL_MODELVIEW);//把當前矩陣切換為模型檢視矩陣
	glLoadIdentity(); //載入一個單位矩陣
}

void Draw() {
	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
	glClear(GL_COLOR_BUFFER_BIT);

	glLoadIdentity();	//把模型矩陣換位單位矩陣
	glPushMatrix();
	glTranslatef(-1.0f, 0.0f, 0.0f);
	glBegin(GL_TRIANGLES);
	glColor4ub(255, 0, 0, 255); glVertex3f(-0.5f, -0.25f, -5.0f);
	glColor4ub(0, 0, 255, 255); glVertex3f(0.5f, -0.25f, -5.0f);
	glColor4ub(0, 255, 0, 255); glVertex3f(0.0f, 0.5f, -5.0f);
	glEnd();

	glPopMatrix();
	glPushMatrix();
	glTranslatef(1.0f, 0.0f, 0.0f);
	glBegin(GL_TRIANGLES);
	glColor4ub(255, 0, 0, 255); glVertex3f(-0.5f, -0.25f, -5.0f);
	glColor4ub(0, 0, 255, 255); glVertex3f(0.5f, -0.25f, -5.0f);
	glColor4ub(0, 255, 0, 255); glVertex3f(0.0f, 0.5f, -5.0f);
	glEnd();
	glPopMatrix();
}

相關推薦

C++ opengl 矩陣

矩陣的壓棧與出棧 讓兩個重合的三角形,分開 程式執行截圖如下: 虛擬碼如下: void Init() { //設定當前矩陣 glMatrixMode(GL_PROJECTION);

C/C++ 知識回顧 的入

#include<iostream> using namespace std; typedef struct student { int data; struct student *

adc span splay cdb isp itl pan 進棧 play 問題描述:有四個元素abcd依次入初始為空的棧中,入棧之後可停留,可出棧。最後所有元素都出棧,請分析並寫出所有可能的分別以a,b,c,d開頭的出棧序列。 首先分析以a開頭的出棧序列。序列前兩位無非

一道值得思考的資料結構題目(入序列)

就業指導課上做的一道資料結構中有關棧的題目,當時一開始自己思考不全面,錯選了。 一個棧的入棧序列為1,2,3,…,n ,其出棧序列是 p 1 ,p 2 ,p 3 ,…p n 。若p 2 = 3,則 p 3 可能取值的個數是() A:n -3 B:n - 2

今天總結一下我對Fragment的理解(碎片的入,碎片的巢狀)

1.碎片的巢狀! getFragmentManager到的是activity對所包含fragment的Manager,而如果是fragment巢狀fragment,那麼就需要利用getChildFragmentManager()了。 getFragmentManager(

【資料結構】C語言最基礎練習:的初始化,,遍歷,清空

隨手練習一下,詳細程式碼解釋都在程式碼片裡請仔細看看 如果有什麼不對的地方,請在下方留言 先建立標頭檔案: #define _CRT_SECURE_NO_WARNINGS 1 #ifndef _TEST_H #define _TEST_H //棧的鏈式儲存結構;

的基本操作

article 安全 empty scan -s type fine mod pos #include<stdio.h> #include<stdlib.h> #define LENGTH 100 //初始分配棧的長度 #define ADD

C語言基礎入操作

 C語言入棧,出棧基礎操作,裡面非常詳細了,我就不囉嗦了 #include <iostream> #include <stdio.h> #include <stdlib.h> #include<cstring> #define

資料結構(C語言)的建立、入並進行進位制轉換

十進位制數轉換為八進位制: | N |N div 8(商) | N mod 8(餘數) |1348| 168 | 4 | 168 | 21 | 0

順序的基本操作(入)及C語言實現詳解

棧,可以理解為遵循“後入先出”原則的線性表,因此棧結構可以採用順序表或連結串列實現。 順序棧的實現採用的是順序表,也就是陣列。 順序棧的實現思想是:在陣列中設定一個隨時指向棧頂元素的變數(一般命名為 top ),當 top 的值為 -1 時,說明陣列中沒有資料,即棧中沒有資料元素,為“空棧”;只要資料元素

的基本操作(入)及C語言實現完全攻略

鏈棧,即用線性表的連結串列結構實現棧的功能。實現過程中,鏈棧不需要建立頭結點,增加頭結點反而會增加程式的複雜性,因此連結串列中只需要建立一個頭指標就可以了。 鏈棧的實現思想是:用連結串列頭結點的一端作為棧的棧頂端,這樣做的好處是當資料元素壓棧或者彈棧時,直接使用頭指標就可以完成,不需要增設額外的指標。 例

資料結構——入,佇列相關操作(C語言實現)

閱讀過程之中可能會花費比較多的時間:建議直接翻到最後,有完整的程式碼可以使用 程式準備工作 #include <stdio.h> #include <malloc.h> #include <stdlib.h> #include<proc

C語言實現鏈的初始化&進&&讀取頂元素

/*連結串列實現棧的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typedef struct node { int data; struct node *

C語言實現順序的初始化&進&&讀取頂元素

/*順序表實現棧的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define Stack_Size 50 //設棧中元素個數為50 #define OK 1 #define ERROR 0

資料結構--c實現

 一,只有棧頂的情況。 1,首先定義連結串列單節點: typedef struct node {     ElementType data;     struct node *next }StackNode ,*LinkStack; 2.

2014年第五屆藍橋杯C/C++程式設計本科B組決賽 次序(結果填空)

2014年第五屆藍橋杯C/C++程式設計本科B組決賽題目彙總: 出棧次序 X星球特別講究秩序,所有道路都是單行線。一個甲殼蟲車隊,共16輛車,按照編號先後發車,夾在其它車流中,緩緩前行。 路邊有

【資料結構】c++ 採用鏈式結構實現關於入,列印的操作

c++標準的庫模板中,有專門的容器棧,但是為了鞏固下對棧的理解,用結構體以鏈式結構寫了個小demo,留著備用 #include #include"stdafx.h" using namespace std; struct node { int data; nod

uCOS-II移植到51微控制器任務切換的操作

UCOS-II嵌入式實時作業系統 在任務切換時,微控制器壓入堆疊和出棧結構圖        由於51系列微控制器要求堆疊必須設定在片內RAM(IDATA)中,而這種處理器的片內RAM非常有限,不可能把應用程式中的所有任務的任務堆疊都設定在片內RAM中,所以就只能把應用程式

資料結構必須掌握 ---

今天剛學到壓棧出棧,就把這個具體過程都實現了一遍,廢話不多說,程式碼如下:#include"stdafx.h" #include<iostream> using namespace st

C語言模擬順序的建立、入操作

#include<stdio.h> #include<stdlib.h> #define true 1 #define false 0 #define ok 1 #define error 0