我正在尋找一種方法將像素緩衝區直接渲染到屏幕上。我需要在OSX和Linux上都做到這一點,儘管我知道我可能需要通過不同的方法爲每個操作系統做到這一點(儘管跨平臺庫會很好。)你從哪裏開始?OpenGL像素緩衝區直接在Linux和Mac OSX屏幕上
2
A
回答
5
您可以隨時使用四邊形的正投影到您的後緩衝器/表面。
或者只是在NDC空間(-1到+1)發送四元組而不需要任何矩陣乘法。
更新,因爲這顯然是不夠清晰:
對於「全屏四」的方式,發送兩個三或四一個像這樣的:
配置/訂單的verts取決於你的繞線順序和原始模式。 Z
的值應該在-1
到1
之間。您可以選擇-1
。投影和模型視圖矩陣應該是一個單位矩陣(這是所有零,則1米的主對角線)
在你不需要做任何的矩陣乘法,所以你不實際需要任何矩陣OPS換句話說在着色器中,因爲座標已經在Normalized Device Coordinates(NDC)中。
即,它的
這裏,目標設備內間隔是alread一些代碼:
glMatrixMode (GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glMatrixMode (GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glBegin (GL_QUADS);
glVertex3i (-1, -1, -1);
glVertex3i (1, -1, -1);
glVertex3i (1, 1, -1);
glVertex3i (-1, 1, -1);
glEnd();
glPopMatrix();
glMatrixMode (GL_MODELVIEW);
glPopMatrix();
頂點着色器是,不只是一個直接的直通到像素/片段着色器。顯然,你可以將相關的像素/紋理緩衝區設置爲着色器資源/變量,並在像素/片段着色器中對其進行採樣。並且不要忘記將頂點的texcoord UV設置爲相應的紋理值(0-1
)。
或者,您也可以使用相應的窗口系統將紋理直接塗抹到窗口表面。這很大程度上取決於您用於窗口管理(例如SDL)的內容,還可能需要某種紋理格式/佈局才能工作(或轉換)。
相關問題
- 1. 在Windows屏幕上渲染緩衝區
- 2. Java OpenGL將屏幕外緩衝區繪製爲圖像
- 3. OpenGL - 使用幀緩衝區和Oculus Rift的空白屏幕
- 4. 在Mac上直接錄製屏幕
- 5. Mac os x Terminal.app的緩衝區和屏幕命令
- 6. 渲染到幀緩衝區和屏幕
- 7. 我可以直接寫入OpenGL中的顏色緩衝區嗎?
- 8. OpenGL頂點和緩衝區
- 9. 在Python中操作屏幕緩衝區
- 10. OpenGL中的幀緩衝區對象和像素緩衝區對象之間有什麼區別?
- 11. 如何使用OpenGL直接在屏幕上繪製像素數組?
- 12. Opengl浮動緩衝區
- 13. OpenGL-ES 1.1 iPhone - 深度緩衝區導致洋紅色屏幕
- 14. OpenGL到DirectX(緩衝區到紋理到屏幕)
- 15. 如何訪問Android中的主屏幕/ OpenGL緩衝區?
- 16. OpenGL - 頂點緩衝區對象沒有繪製到屏幕
- 17. django文件上傳直接緩衝區
- 18. 如何渲染到幀緩衝區而不在屏幕上用OpenGL顯示?
- 19. OpenGL緩衝區和Qt OpenGL模塊
- 20. 在OpenGL中清除顏色緩衝區
- 21. 如何在OSX中訪問NSWindow的像素緩衝區?
- 22. 4K屏幕在Windows捕獲並直接保存到緩衝區中
- 23. 在Mac OS X的進程之間共享OpenGL幀緩衝區
- 24. 模板緩衝區在OpenGL
- 25. 訪問緩衝區在OpenGL
- 26. 裁剪像素緩衝區
- 27. 緩衝區的屏幕命令
- 28. 控制檯中的屏幕緩衝區
- 29. 帶有〜8MB緩衝區的寫入()上的段錯誤(OSX,Linux)
- 30. JNI直接緩衝區。誰負責本地緩衝區釋放?
你怎麼做到的?你有鏈接怎麼做?或者一些代碼? – 2012-07-16 08:00:58
@BЈовић我不配得到downvote。我寫的所有圖形API都是普遍適用的。我寫的東西給了足夠的信息來「開始」 - 互聯網上有無數的例子; OP要求從哪裏開始。我相信給理論而不是爲他們寫一些代碼,但我會通過舉一些例子放縱你。 – 2012-07-16 08:41:46
這正是我需要的,非常感謝你。這是一個非常好的解釋。 – Lethjakman 2012-07-17 16:55:47