我正在用C++編寫Android和iOS引擎,目前主要關注Android與NDK。如何自動縮放我的OpenGL ES 2.0窗口?
我想渲染到一個較小尺寸的視口(比如說600x360),並自動將其升級到原生rez(比如800x480)。目前,較小的視口顯示在屏幕下方的黑色區域。
我的問題是我不知道一個簡單的方法來做到這一點透明地使用NDK。在API級別11中有一個GLSurfaceview.setScaleX
(和Y)函數,這將是完美的,但不存在於我所針對的API級別9中。另一個不好的解決方案是呈現給FBO,並將其作爲最後一步呈現給屏幕。
我正在考慮簡單的故事一個縮放矩陣,並要求引擎的用戶(現在只是我)在繪製到屏幕時始終用頂點乘以頂點。這與使用glPushMatrix
類似。
我搜索了一段時間,找不到一個好的解決方案。有誰知道如何提供幫助?
您的縮放解決方案不會改變分辨率,它只是放大幾何尺寸,然後以全分辨率呈現。這與完全不同於渲染小分辨率渲染圖像。我不知道爲什麼FBO解決方案會是一個糟糕的解決方案,因爲它是解決您的問題的完美方案。 –
我可以測試它,但我關心性能。恐怕渲染到FBO然後複製它會在大多數設備上遇到填充率限制。 – nullspace
您應該如何將低分辨率圖像高分辨率轉換爲高分辨率圖像。除插入低分辨率圖像外沒有其他方法,因此無論如何您都無法解決這個問題。 FBO是最快的解決方案,因爲它可以防止不必要的副本。你不能僅僅通過神奇的方式將低分辨率的數據渲染到高分辨率的數據中,中間值(在低分辨率中缺失)應該具有什麼顏色。你需要一些預存儲然後插入。 –