数码绘画和光栅图形软件,如克里塔和Photoshop有一个画布,你可以用画笔。从编程的角度来看,这个画布是如何呈现的?它能包含在像OpenGL这样的图形管道中吗?
建议的解决方案之一是将画布表示为纹理。如果你知道更多可能的解决方案,请告诉我。谢谢。
发布于 2020-06-09 07:45:10
数码绘画和光栅图形软件,如克里塔和Photoshop有一个画布,你可以用画笔。从编程的角度来看,这个画布是如何呈现的?
我无法访问您提到的程序的代码,所以我无法知道他们是如何做到这一点的,因为通常有多种方法来解决编程问题。不过,我想每一个有图形编程经验的人都会立即想到他的评论中已经提到的解决方案@ think灯泡,因为它是最简单的解决方案。
纹理只是一个颜色值数组,像OpenGL这样的图形API希望你将它们上传成这样。因此,一个可能的解决方案是在内存中以这种形式表示可修改的画布。每次修改时,您都会在数组中找到受影响的像素,调整它们的颜色值,并将更新后的画布上传为纹理(或更新已经存在的像素)。然后,你只需画一个全屏(或任何其他大小,你喜欢)四边形,并附加纹理到它。就这么简单。
它能包含在像OpenGL这样的图形管道中吗?
你可能已经猜到了:是的,你可以这样做。如果使用纹理方法,则可以使用图形管道中的普通纹理进行任何操作。如果您打算在3d游戏中包含一个画布,那么请记住,由于透视投影,找到需要修改的像素会变得更加复杂。但是,呈现过程保持不变。
https://computergraphics.stackexchange.com/questions/9923
复制相似问题