我想實現一個關於鉛筆渲染的算法。現在我有32種不同筆畫強度和一些模型的紋理。這個過程就是這樣。首先,我應該使用Phong陰影來確定強度。然後我應該將紋理映射到渲染結果。如何用opengl和cg做多通道渲染
紋理應存儲在三維紋理空間。問題是,我不知道如何使用opengl和着色器進行多通道渲染。我不知道如何用正確的座標訪問紋理。如果網格的面比紋理小?任何人都可以給我看一些doint的例子嗎?
我想實現一個關於鉛筆渲染的算法。現在我有32種不同筆畫強度和一些模型的紋理。這個過程就是這樣。首先,我應該使用Phong陰影來確定強度。然後我應該將紋理映射到渲染結果。如何用opengl和cg做多通道渲染
紋理應存儲在三維紋理空間。問題是,我不知道如何使用opengl和着色器進行多通道渲染。我不知道如何用正確的座標訪問紋理。如果網格的面比紋理小?任何人都可以給我看一些doint的例子嗎?
您需要渲染某種離屏緩衝區才能進行多次渲染。 Framebuffers
是目前在OpenGL中進行離屏渲染的方法。 Apple has a good page describing how to use them。 (這不是Mac特定的。)
我不知道我理解你關於紋理的問題,所以不能回答那個部分。
非常感謝!該算法的作者說'確定紋理座標我們在圖像空間中完成'。他使用了一種稱爲圖像空間濾波方法。你知道嗎? –
圖像空間是圖像佔據的邏輯區域。您的紋理是在像素空間中定義的 - 當您調用glTexImage * D()時,可以告訴它該圖像的像素尺寸。圖像空間是您希望佔據的尺寸,而不是其包含的像素數量。您可能想要縮小或增大圖像(也許只能朝一個方向或另一個方向)。從一個到另一個的確切轉換完全取決於您想要完成的任務 - 例如,將2D紋理映射到地球上,而不是將木材紋理映射到桌面上。 – user1118321
謝謝你的幫助。我已經知道一些關於幀緩衝器的知識,但是仍然有些東西讓我感到困惑。即使我可以使用framebuffer將內容繪製到FBO,我如何使用framebuffer進行多通道渲染?例如,我想確定筆畫的強度,如何使用渲染的紋理來做到這一點?我是否讓自己清楚了? –
使用您輸入的座標來縮放紋理。因此,對於您繪製的每個頂點(可能每步3個頂點,因爲您最有可能繪製三角形),可以提供(X,Y)座標。現在,對於所有這些頂點,您還必須指定它們對應的紋理的座標(在區間[0,1]中)。 – Yuri
謝謝你的幫助!該算法的作者說'確定紋理座標我們在圖像空間中完成'。他使用了一種稱爲圖像空間濾波方法。你知道嗎? –