簡體   English   中英

沒有OpenGL的紋理貼圖

[英]Texture Mapping without OpenGL

因此,我應該對我加載到場景中的特定模型(使用幀緩沖區和平面針孔相機)進行紋理映射,但是我不允許使用OpenGL,否則我不知道該怎么做(我們確實將glDrawPixels用於其他功能,但這是我們可以使用的唯一功能)。

這里有沒有足夠的能力讓我了解如何在沒有OpenGL功能的情況下進行紋理貼圖?

我應該使用以下幻燈片: https : //www.cs.purdue.edu/cgvlab/courses/334/Fall_2014/Lectures/TMapping.pdf

但是它們對我來說意義不大。

到目前為止,我收集的是以下內容:

您遍歷一個模型,並為每個三角形分配“紋理坐標”(我不確定它們是什么),然后使用“模型空間插值”(同樣,我不知道這是什么)來應用紋理正確的角度來看。

目前,我的程序正在執行以下操作:

茶壺

TL; DR:1.什么是模型空間插值/我該怎么做? 2.紋理坐標明確是什么? 3.在不使用OpenGL的情況下,如何在較高水平上(以通俗的術語來說)對模型進行紋理映射。

好的,讓我們首先確保我們都在同一頁上討論顏色插值的工作方式。 第125到143行設置了三個矢量redABCgreenABCblueABC ,用於在三角形上插值顏色。 它們一次工作一個顏色分量,並且三個向量中的每一個都有助於內插一個顏色分量。

按照慣例,s,t坐標位於源紋理空間中。 如網格數據中所提供的,它們指定三角形的特定頂點在紋理內的位置。 要理解的關鍵是, 像顏色一樣,需要在三角形上插補s,t坐標

因此,您想要做的是再設置兩個ABC向量: sABCtABC ,精確地復制用於設置redABC的邏輯,但是您不必使用每個頂點的顏色分量,而只需使用每個頂點的s,t坐標頂點。 然后,對於每個像素,而不是將ssiRed等計算為unsigned int值,而是將ssisssit計算為float,假設您的源s,t值表現良好,則它們應在0.0f1.0f的范圍內。

現在你有一個插S,T坐標,乘ssis由紋理的紋理像素寬度, ssit通過紋理像素的高度,並使用這些坐標來獲取紋理像素。 然后將其放在屏幕上。

由於您未使用OpenGL,所以我假設您編寫了自己的軟件渲染器來渲染茶壺?

紋理只是圖像。 紋理坐標是紋理中的2D位置。 因此(0,0)在左下角,而(1,1)在右上角。 對於3D模型的每個頂點,應在紋理中存儲2D位置(u,v)。 這意味着在那個頂點上,您應該使用該點紋理的顏色。

要了解頂點之間的像素的UV紋理坐標,您需要在其周圍插入頂點的紋理坐標。 然后,您可以使用該UV查找紋理中的顏色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM