首頁 > 後端開發 > C++ > 主體

在 OpenGL 中縮放時如何實現像素化線條?

Susan Sarandon
發布: 2024-11-06 01:38:02
原創
548 人瀏覽過

How to Achieve Pixelated Lines When Scaling in OpenGL?

在OpenGL 中縮放單像素線

渲染復古2D 像素圖形時,通常使用較低的內部解析度進行像素化,並將輸出縮放到較大的解析度展示。然而,縮放 GL_LINE_LOOP 基元可能會導致非像素化線條。

理解問題

OpenGL 的 glOrtho 函數定義了一個 2D 座標系,其中原點位於左下角並延伸到右上角。透過呼叫 glOrtho(0, 320, 240, 0, 0, 1),你定義了一個 320x240 的虛擬畫布。

但是,當使用 glViewport 函數縮放輸出時,虛擬畫布並沒有物理上調整大小。相反,基元是在完整輸出解析度(例如 960x720)上繪製的,然後按比例放大。這會產生像素化的矩形,但非像素化的線條。

正確方法

建議的解決方案是渲染到所需虛擬解析度(在本例中為320x240)的紋理,然後繪製該紋理以所需的輸出解析度(960x720 ) 到視窗。這可確保圖元以虛擬解析度渲染,並保持其像素化外觀。

實作步驟

  1. 建立大小為 320x240 的紋理。
  2. 將紋理附加到幀緩衝區物件 (FBO)。
  3. 綁定 FBO 進行渲染。
  4. 將視窗設定為紋理的大小 (320x240)。
  5. 渲染圖元到紋理。
  6. 解除 FBO 的綁定。
  7. 將視窗設定為輸出視窗的大小 (960x720)。
  8. 將紋理綁定為一個紋理單元。
  9. 使用適當的座標將紋理繪製到輸出視窗。

這種方法可確保以虛擬解析度繪製線條,即使放大到更高的解析度也能保持其像素化外觀輸出解析度。

以上是在 OpenGL 中縮放時如何實現像素化線條?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!