2013-05-09 43 views
0

我需要使用現有紋理渲染對象,並且需要在渲染過程中更改顏色。 (如將紅色通道乘以0.5)。現有的紋理不是單色的。我需要這樣做,而不啓用照明和沒有着色器,所以我不打擾我正在工作的應用程序。我無法在渲染過程中儘早工作,以便可以直接讀取/寫入緩衝區。在不使用光照或着色器的情況下改變OpenGL渲染的顏色

實際上,我希望某種顏色轉換矩陣或過濾器在正常渲染過程中起作用。

+0

請勿打擾應用程序,這是什麼意思?你在做某種類型的DLL注入嗎? – 2013-05-09 20:03:03

+0

您還定位了哪個API版本(OpenGL)? – Trax 2013-05-09 20:33:26

+0

OpenGL 2或更低版本,它是在帶有用戶指導的Java程序中注入代碼。 GPU內存很高,但GPU處理利用率不高,因此計算而不是附加紋理更好。該程序使用討厭的黑客而不是適當的照明代碼,因此它不容易被替換。 – JAKJ 2013-05-09 21:34:17

回答

1

基於有限的信息,我會承擔一些事情。

我假設你正在使用固定管道。 我假設你沒有使用像glBitmap或glDrawPixels這樣的低級像素函數。如果你是你不應該的。

爲了解決你的問題請嘗試以下操作: 繪製紋理四,使用在glBegin,glEnd,glVertex2f,glTexCoord2f 要改變只是在glBegin之後和任何其他戰平指令之前的顏色使用glColor。 您應該在cpu中執行顏色轉換矩陣,並使用glColor使用該結果。

圖像將被相應地混合。 WHITE不會更改圖像顏色。 確保GL_LIGHTING未啓用。

+0

這聽起來很有趣,今晚我會試試。該程序使用固定管道而不是正確的代碼,是的,它只是繪製紋理四邊形。 – JAKJ 2013-05-09 21:35:37

0

OpenGL有一個可以像GL_MODELVIEW或GL_PROJECTION一樣訪問和修改的顏色轉換矩陣(GL_COLOR)(您很可能需要glLoadMatrix或glMultMatrix,因爲glRotate等對顏色沒有多大意義)。它需要擴展GL_ARB_imaging。

+0

我被告知只能在直接像素傳輸過程中工作,而不能在正常渲染過程中使用。 – JAKJ 2013-05-09 22:36:34

相關問題