首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2d gpu驱动渲染引擎

2d gpu驱动渲染引擎
EN

Computer Graphics用户
提问于 2022-01-06 19:50:19
回答 1查看 204关注 0票数 0

首先,我不知道这是否是问我问题的正确地方。如果不是的话,请向我指出一个与我的问题有关的方向。

不久前,我遇到了一个名为韦德里德的跨平台图形库。

这样,我就有了自己编写正在处理中克隆的想法,但却为C#编写了自己的克隆。这个计划唯一的问题是我对图形编程一无所知。所以我很幸运地开始研究这件事.因为我的发现要么太笼统要么太学术。

我真正想知道的是,是否有可能用gpu驱动的图形库(如opengl、metal、vulkan等)编写一个2d渲染器。如果是的话,你是怎么写渲染器的?

我最初的方法是:创建一组着色器来渲染诸如矩形、椭圆、三角形、直线等物体,并将它们与均匀缓冲区连接起来,以发送着色器属性,例如如何绘制椭圆颜色。

但当不得不渲染线条时,这似乎变得非常愚蠢,因为在这种情况下,我会让一个四角体有一个着色器,在四边形中画一条线,并使剩馀的像素透明。这看起来很低效。

任何建议都是非常有用的!但是请保持友好,因为在这个问题上,我不是一个业余爱好者。)

如果需要任何澄清或补充信息,请让我知道!

EN

回答 1

Computer Graphics用户

发布于 2022-01-07 13:12:10

使用您列出的任何Graphics API编写2D渲染系统都是非常合理的。

三角形是所有流行的图形API的基本介质,因此学习使用三角形,无论是2D还是3D,操作三角形是建立和运行渲染系统的最大障碍之一。

OpenGL往往是最流行的,并且(通常)被认为是最容易学习的API。还有很多关于OpenGL的教程,大多数像learnopengl.com这样的教程都集中在3D上,但是通过这些例子可以让你熟悉这个界面,一个2D渲染系统也会以一种稍微不同的方式使用相同的界面。

你将不得不学习一些线性数学,比如旋转和翻译,但是好消息是,关于这个主题的所有不错的资源都是从描述2D线性数学开始的。坏消息是,在数学的学术方面是没有办法的。真正的坏消息是,2D同质坐标系是管理对象的最佳方法。同质坐标系允许您将对象放入到自己的专用坐标系中,对该坐标系中的对象进行“工作”,然后轻松地将对象移动到不同的、通常是共享的坐标系中。这听起来很复杂,但一旦你得到了主要的想法,它实际上是非常容易的。此外,也有一些优秀的入门级书籍的主题,涵盖了2D渲染真的很好。

呈现系统的下一个主要组件是它编写的实际代码。C++往往是最受欢迎的语言,主要是因为它是一种很有表现力的语言,可以很好地进行优化。然而,学习整个C++语言可能非常令人望而生畏。幸运的是,您可以选择语言的一些领域作为开始,然后随着您对语言的熟悉而扩展您的知识库。如今,脚本语言提供了相当高的效率,而且更容易学习。脚本语言可能是一个很好的选择,因为它将允许将更多的开发重点放在学习图形方面。不幸的是,脚本语言有其局限性。它们不公开整个图形API,不允许很低级别的访问硬件,而且性能受到限制。但其中大部分都是可以解决的。(除了性能之外,性能最终促使许多程序员转向像C++这样的语言)

票数 1
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/12444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档