2012-05-14 72 views
0

我有一個1024x1024背景紋理,並試圖呈現一個100x100的精靈(也存儲在紋理)到背景紋理的左下角。渲染一個半透明的雪碧紋理

我想呈現在50%不透明度的精靈。這需要在CPU中完成,而不是使用着色器的GPU完成。我發現的大多數例子都是使用着色器來實現的。

這樣做的最好方法是什麼?

回答

1

我想你是指從CPU端的opengl命令,因此使用固定功能(或固定管道)。我從「無着色器」請求中推斷出這一點。 因爲「在CPU上執行此操作」實際上意味着要執行紋理的檢索/映射以便在CPU上訪問它,像素上循環,並使用glTexImage將結果複製到圖形卡或之後取消映射紋理。這最後一種方法將是非常低效的。 所以你只需要激活混合。

glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

並按順序渲染:背景,然後在你的100x100圖像之後有一個四邊形。它會從你的100x100圖像的alpha通道中進行混合。您可以從圖像編輯工具將其設置爲恆定的50%。

+0

你能不能也請指點我如何實際上可以在紋理上繪製雪碧呢? – Dex

+0

是的,用舊的opengl上下文,你可以做glTexImage2d來上傳你的圖像數據,然後glBindTexture,然後用四邊形glBegin,調用4次glVertex2f和glTexCoord繪製四邊形,然後glEnd。應該這樣做。我確信nehe.net上有一些教程 – Lightness1024