我正在使用glsurfaceview和它的渲染器來顯示GLES到設備的全屏。這按預期工作。android glsurfaceview stretch to fit
現在我想添加選項來「縮放」輸出尺寸。我的意思是(例如)將GLES渲染到屏幕四分之一的視口,然後在顯示時拉伸到全屏。這將使較慢的着色器渲染速度更快,並具有一點塊狀。
我目前可以縮小GLES大小,改變glViewPort並在屏幕的左下角呈現。我怎樣才能讓這個較低的季度延伸到填滿整個屏幕?
非常感謝任何提示/答案。
解決方案經過一些更多的試驗和錯誤和谷歌搜索。這是將四分之一大小的圖像渲染爲全屏。
在創建glsurfaceview之後;
glSurfaceView.getHolder().setFixedSize(glWidth,glHeight);
glHeight和glWidth是內部GLES渲染大小。所以要渲染一個圖像1/4的屏幕使用glWidth = screenWidth/2和glHeight = screenHeight/2
然後在onSurfaceChanged中設置glViewPort;
glViewport(0, 0, screenWidth/2, screenHeight/2);
賓果。更快的渲染(但2×2塊像素)輸出。
希望能幫助其他人解決此問題。
有沒有一種方法來指定縮放算法?默認情況下,它在伸展時似乎會執行線性或雙線性模糊。是否有可能有拉伸不過濾,所以結果是方形像素? – Some1Else
過濾由顯示硬件決定,通常是雙線性的。通過使Surface的大小與View的大小成比例,可以得到* square *像素;注意答案中鏈接的Grafika演示中使用的Surface的奇數大小。通過使Surface與View的大小相同,並在GLES中執行「胖像素」操作,可以獲得* sharp *像素 - 您無法控制顯示縮放器。 – fadden