首先是一些背景(当人们提问时我总是喜欢):我在写一个库项目。这是一个简单的OpenGL'图形失真'库。用户应该能够创建一个名为“地区”用一个简单的调用某些对象,以Android库项目:需要检索没有上下文的资源
myRegion = new DistortedRegion(w,h);
然后对他们的定义各种扭曲和吸引他们:
myRegion.addTwistDistortion(...)
myRegion.draw(x,y);
这一切就是这么简单。该库使用OpenGL以各种用户定义的方式绘制区域(真正的矩形位图)。
现在,问题是:库需要在'raw'文件夹中访问它的顶点和片段着色器,这是与其资源一起存储的.glsl文件。为了做到这一点,我们必须访问Resources对象,为了做到这一点,我们AFAIK必须拥有Context对象。所以目前,因为它代表库必须首先用电话
Distorted.init(Context)
这对我来说是一个巨大的问题进行初始化,因为这恕我直言,使得整个API笨拙。如果不是这个该死的上下文,就没有必要初始化任何东西,并且用户只要能够随时创建新对象就可以了,这在文档中很好解释。一个单独的init()调用,仅仅需要将Context对象传递给库,只需要检索Resources对象(仅用于打开包含着色器代码的两个文件)才会使所有这些非常笨拙。我想在我的库中简单地将着色器代码移动到静态初始化的字符串中,但是这对于开发来说很麻烦(着色器是几百行相当复杂的代码,并且如果我将它们保存在单独的代码中)。 glsl文件,我可以有句法highliting等)
有什么建议吗?
它甚至可以将资源包含在库中吗? – mach
当然这是可能的。我在做:) – Utumno
我在想.jar/.so – mach