Qt5版NeHe OpenGL教程之五 紋理對映

2021-08-19 23:11:00 字數 1540 閱讀 3756

在這一課裡,將學會如何將紋理對映到立方體的六個面。

學習texture map紋理對映(貼圖)有很多好處。比方說您想讓一顆飛彈飛過螢幕。根據前幾課的知識,我們最可行的辦法可能是很多個多邊形來構建飛彈的輪廓並加上有趣的顏色。使用紋理對映,您可以使用真實的飛彈影象並讓它飛過螢幕。您覺得哪個更好看?**還是一大堆三角形和四邊形?使用紋理對映的好處還不止是更好看,而且您的程式執行會更快。飛彈貼圖可能只是乙個飛過視窗的四邊形。乙個由多邊形構建而來的飛彈卻很可能包括成百上千的多邊形。很顯然,貼圖極大的節省了cpu時間。

需要注意的是,用作紋理的影象的寬和高必須是2的n次方;寬度和高度最小必須是64象素;並且出於相容性的原因,影象的寬度和高度不應超過256象素。

如果您的原始素材的寬度和高度不是64,128,256象素的話,使用影象處理軟體重新改變影象的大小。

可以肯定有辦法能繞過這些限制,但現在我們只需要用標準的紋理尺寸。

關於紋理對映,更詳細的講解可參考:

這一課的**較之前有了較大變化,全部貼出來。

lesson5.h

#ifndef lesson5_h

#define lesson5_h

#include #include class qpainter;

class qopenglcontext;

class qopenglpaintdevice;

class lesson5 : public qwindow, qopenglfunctions_1_1

;#endif // lesson5_h

lesson5.cpp

#include "lesson5.h"

qwindow(parent)

, m_context(0)

lesson5::~lesson5()

void lesson5::render(qpainter *painter)

void lesson5::myperspective( gldouble fov, gldouble aspectratio, gldouble znear, gldouble zfar )

void lesson5::render()

void lesson5::initialize()

void lesson5::rendernow()

m_context->makecurrent(this);

if (needsinitialize)

render();

m_context->swapbuffers(this);

}void lesson5::loadgltexture()

void lesson5::exposeevent(qexposeevent *event)

void lesson5::resizeevent(qresizeevent *event)

main.cpp

執行效果

Qt5 嵌入式裝置QT5動態庫編譯,QT5移植

perl 5.8 or later python 2.7 or later c compiler supporting the c 98 standard sdk提供 編譯套裝 sudo apt get install build essential sudo apt get install git...

QT5程式設計小記

1.今天在用qt寫串列埠小例項的時候碰到qt5 c2001 常量中有換行符等問題,因為是qt5,很多qt4的解決方案是無效的的。解決方案 用記事本開啟你的cpp檔案,另存為utf8格式 2.之前一直使用qdebug qstring 串列埠開始寫資料 後台列印一直亂碼 解決方案 qdebug qstr...

Qt5基本教程

qt 學習之路 2 目錄 序 qt 前言 hello,world 訊號槽自定義訊號槽 qt 模組簡介 mainwindow 簡介 新增動作 資源檔案 物件模型 布局管理器 選單欄 工具欄和狀態列 對話方塊簡介 對話方塊資料傳遞 標準對話方塊 qmessagebox 深入 qt5 訊號槽新語法 檔案對...