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