【发布时间】:2015-11-20 01:52:57
【问题描述】:
我显然是一个 OpenGL 装腔作势者。
我的目标是拥有一个使用 GLES20 的自定义 Android GLSurfaceView 控件,该控件可以加载 STL 资源文件 (https://en.wikipedia.org/wiki/STL_(file_format)) 并以固定照明的单一定义颜色呈现它。 模型本身会旋转;灯光和颜色将被固定。
听起来很简单,但我无法找到一种方法将我从大量简单的三角形/立方体示例中学到的知识应用到每个面上都有单独的颜色的模型中(不是说面的数量真的很重要) )。
我借用了这个相当不错的代码 [加载 ascii STL 文件]...
https://bitbucket.org/saschawillems/opengl-es/src/ed3b324dda4b/stlviewer/?at=master
...并将其更改为在 Android Studio 中运行并加载二进制 STL 文件:
https://bitbucket.org/swooby/opengl-es/src/8bf43e1583c2/stlviewer/?at=binary
渲染器的着色器代码只是使用面部法线计算颜色,从而产生可爱的彩虹效果,并产生被照亮的错觉:
https://bitbucket.org/swooby/opengl-es/src/8bf43e1583c238f4397bc469b13cd60dcb34674b/stlviewer/app/src/main/java/de/saschawillems/stlviewer/GLES20Renderer.java?at=binary&fileviewer=file-view-default#GLES20Renderer.java-166
我认为这意味着这里没有真正的实际照明。
我必须在这里遗漏一些东西,因为我认为我想做的比从法线计算颜色更简单;我只想使用从法线着色的单一定义颜色来绘制对象。我试图通过将片段颜色设置为常数来做到这一点,但这会导致非常 2D 的图像/轮廓没有阴影。 我相当肯定这需要添加照明,也许这会增加一点代码,但我显然对此很装腔作势,以至于我什至无法想出一个复杂的方法来做到这一点。
我已经在 Google 上搜索了我想做的事情的例子;我认为它会很容易找到,但我一直找不到。我只是在寻找一个可以定义颜色的简单经典“茶壶”示例。 有人愿意向我展示如何简单地编写代码,或者我在哪里可以找到我正在尝试做的简单示例?
谢谢!
Pv
【问题讨论】:
标签: android opengl-es-2.0