我正在编写一个模仿自然物理学的程序。我想知道是否有更好的方法来绘制对象,而不是覆盖该OnDraw
方法,以及FillRectangle(x,y,1,1)
每个像素。
有没有办法使用 DirectX 或 OpenGL 执行类似的操作?因为据我所知,Graphics
不使用计算机的视频卡(如果我错了,请纠正我)。
说到这里,我想要一些关于使用数学计算来计算相对象限大小来创建 3D 环境的想法,以便对象看起来比现实更远(因为监视器只有 2D)或更近。
是的。使用 FillRectangle 逐像素绘制效率非常低,并且会大大减慢速度。正如您所说,您应该使用 DirectX 或 OpenGL 等图形渲染系统。选择哪个取决于您。如果您在网络上进行简单搜索,您会发现许多关于如何开始使用 3D 图形的教程。
OpenGL 专注于“在空间中为我绘制这个对象”,它会负责渲染它,并尽可能利用您的显卡。您不必担心像素,您可以指定尺寸、摄像机角度、着色器等。
您可以使用 OpenGL 绘制像素,但这不是使用它绘制 3D 图形的“正确”方式。
编辑回应瓦萨的问题:
我相信 OpenGL 会根据您的显卡功能和驱动程序做最好的事情。一般来说,OpenGL 不会是您绘制直接像素的最佳选择。但请记住
不同机器上的像素大小不同。您是否期望只忍受这个?还是在低分辨率屏幕上使用大显示器而在高分辨率屏幕上使用小显示器?可能涉及乘法。如果您使用文字像素,那么一旦您开始为不同的屏幕相乘,您就会得到伪像和不准确。
您想要将 X 直接映射到像素。OpenGL 使用浮点值。它们不是整数 1 到 1 的映射,但它们确实使用直接比例。如果你选择一个比例,那么 OpenGL 不会突然开始扭曲比例。
重要的是比例而不是绝对像素。尽管我接受您的情况可能会有所不同。
看到这个二维绘图: