添加RenderText.java
public class RenderContext extends Bitmap
{private final int m_scanBuffer[];public RenderContext(int width,int height){super(width,height);m_scanBuffer=new int[height*2];}public void DrawScanBuffer(int yCoord,int xMin,int xMax){m_scanBuffer[yCoord*2]=xMin;m_scanBuffer[yCoord*2+1]=xMax;}public void FillShape(int yMin,int yMax){for(int j=yMin;j<yMax;j++){int xMin=m_scanBuffer[j*2];int xMax=m_scanBuffer[j*2+1];for(int i=xMin;i<xMax;i++){DrawPixel(i, j, (byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF);}}}
}
修改Display.java
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Dimension;
import java.awt.image.BufferedImage;
import java.awt.image.BufferStrategy;
import java.awt.image.DataBufferByte;
import javax.swing.JFrame;
public class Display extends Canvas
{private final JFrame m_frame;private final RenderContext m_frameBuffer;private final BufferedImage m_displayImage;private final byte[] m_displayComponents;private final BufferStrategy m_bufferStrategy;private final Graphics m_grGraphics;public RenderContext GetFrameBuffer() { return m_frameBuffer; }public Display(int width,int height,String title){Dimension size=new Dimension(width,height);setPreferredSize(size);setMinimumSize(size);setMaximumSize(size);m_frameBuffer=new RenderContext(width,height);m_displayImage=new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);m_displayComponents=((DataBufferByte)m_displayImage.getRaster().getDataBuffer()).getData();m_frameBuffer.Clear((byte)0x80);for(int i=0;i<100;i++){m_frameBuffer.DrawPixel(100+i, 100+i, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xff);}m_frame=new JFrame();m_frame.add(this);m_frame.pack();m_frame.setResizable(false);m_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);m_frame.setLocationRelativeTo(null);m_frame.setTitle(title);m_frame.setVisible(true);createBufferStrategy(1);m_bufferStrategy=getBufferStrategy();m_grGraphics=m_bufferStrategy.getDrawGraphics();}public void SwapBuffers(){m_frameBuffer.CopyToByteArray(m_displayComponents);m_grGraphics.drawImage(m_displayImage, 0, 0, m_frameBuffer.GetWidth(),m_frameBuffer.GetHeight(),null);m_bufferStrategy.show();}
}
修改Main.java
public class Main
{public static void main(String[] args) {Display display=new Display(800,660,"Render");RenderContext target=display.GetFrameBuffer();Stars3D stars=new Stars3D(4096,64.0f,20.0f);long previousTime=System.nanoTime();while (true){ long currentTime=System.nanoTime();float delta=(float)((currentTime-previousTime)/1000000000.0);previousTime=currentTime;target.Clear((byte)0x00);for(int j=100;j<200;j++){target.DrawScanBuffer(j, 100, 200);}target.FillShape(100, 200);display.SwapBuffers();}}
}
结果

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!