将OpenGL 1.x代码移植到WebGL

时间:2014-02-20 16:33:18

标签: c++ opengl opengl-es webgl porting

我正在尝试将OpenGL 1.x代码here(原始代码由Super User常规BenRichards编写)移植到OpenGL 2.x的WebGL安全子集中​​。我的计划是使用Emscripten编译代码,以便这个C ++ / SDL应用程序在现代浏览器中作为JS / WebGL运行,但要实现这一点,我必须消除使用GL 1.x API,因为Emscripten没有正确支持我们正在使用的GL 1.x代码及其不完美/损坏的1.x仿真代码。 BenRichards也有兴趣看到他的“新手”GL 1.x代码转发到更现代的GL API,只要它在桌面和浏览器上运行。

BenRichards和我自己都是OpenGL的新手,所以我们有很多学习要做,以便了解如何转发它。一般方法似乎是出于性能原因避免客户端数据(参见here),但我想通过示例来学习。

here获取此小片段,例如:

void TCell::OnRender() {
  glPushMatrix();
  glColor3ub(color.red, color.green, color.blue);

  glBegin(GL_QUADS);
  glVertex2i(20 * column - 40, 20 * row - 40);
  glVertex2i(20 * column - 20, 20 * row - 40);
  glVertex2i(20 * column - 20, 20 * row - 20);
  glVertex2i(20 * column - 40, 20 * row - 20);
  glEnd();
  //....
  glPopMatrix();
}

如果有人可以将这个通用渲染模式的评论很多的端口写入WebGL-ish代码(尽管仍然是C ++,而不是JavaScript),那就太棒了。这应该为我提供了移植应用程序其余部分的起点。

通过解释如何将这种类型的立即模式GL 1.x代码转换为GL 2的延迟渲染模型的思考过程,这个问题的一个好答案通常会超出我所面临的直接问题。 X。欢迎/鼓励对博客,指南等的外部引用。

1 个答案:

答案 0 :(得分:3)

如果你考虑保留GL 1.x风格,你可能会对这些东西感兴趣:

https://github.com/stefanhaustein/WebGLue

编辑:要与emscripten一起使用,您可能需要构建类似MeshBuilder(在webglue.js中)和C语言中的固定函数仿真.MeshBuilder使端口相对容易开始/结束样式GL代码到现代GL通过使用基本相同的调用来填充可以重用的缓冲区。我们使用类似的方法将Quake II移植到WebGL(但是用Java / GWT代替C)