如果這是一個愚蠢的問題,我很抱歉,但我想確保我是對的。假設我們有一個 8x8 像素的螢屏,我們想要表示一個 2x2 的正方形,一個像素可以是黑色 - 1 和白色 - 0。我想這是一個 8x8 矩陣
[[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,1,1,0,0,0],
[0,0,0,1,1,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0]]
使用這個矩陣,我們繪制像素并每秒更新它們(例如)。我們還有代表正方形的像素坐標:(4,4) (4,5) (5,4) (5,5) 如果我們想移動正方形,我們在坐標的 x 部分加 1。
這是真的還是假的?
uj5u.com熱心網友回復:
圖形渲染是藝術、數學和硬體的復雜網格,假設您問的是螢屏實際如何作業,而不是模擬顯示的寵物問題。
您在問題中描述的緩沖區是軟體用來告訴硬體(視頻卡)在螢屏上繪制什么的介面,而實際如何完成則屬于硬體領域。因此,操作圖形物件(您想要繪制的東西)的邏輯與渲染程序本身是分開的。您的程式告訴緩沖區您要更新哪些像素,僅此而已;無論硬體是否確實設法將其緩沖區重繪 到螢屏上,這都可以根據需要隨時完成。
該軟體將負責整理出在螢屏上繪制的確切內容;這通常在多個邏輯級別上處理。更高級別將為您的物件構建一個虛擬世界空間并確定它們的互動和屬性(位置、速度、碰撞等),以及一個相機來確定螢屏應顯示的 FOV(如果您的世界是 3D)。然后,在將所需的變換(旋轉、剪切、調整大小等)應用于相關影像( 2D)。
應該注意的是,即使在 2D 世界中,虛擬世界空間坐標也不一定反映像素坐標。坦率地說,我不是這個主題的專家,但我懷疑如果您首先確定您希望物件在虛擬空間中移動多遠,然后應用必要的轉換以在視圖中顯示結果會更容易具有可自定義尺寸的視窗。
總之,你可能不希望“加1,X”,當你要移動螢屏上的東西; 你把它移到一個高抽象層,然后畫出結果。這將為您節省很多麻煩,特別是如果您有一個包含各種東西和背景的復雜場景。
uj5u.com熱心網友回復:
假設您想將一組像素向右移動,那么是的,您需要做的就是識別該組像素并將其 X 坐標加 1。當然,您需要用零填充空出的位置,否則就是復制操作。
請記住,我的回答有點幼稚,因為當您到達最右邊的邊界時,您必須換行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/347690.html
標籤:算法
上一篇:console.log二叉樹中的節點,其子樹的總和為偶數
下一篇:專案在網格上的可重復隨機放置
