gpt4 book ai didi

c++ - 将 OpenGL 1.x 代码移植到 WebGL

转载 作者:搜寻专家 更新时间:2023-10-31 01:45:36 25 4
gpt4 key购买 nike

我正在尝试移植 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。欢迎/鼓励对博客、指南等的外部引用。

最佳答案

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

https://github.com/stefanhaustein/WebGLue

编辑:为了与 emscripten 一起使用,您可能想要构建类似 MeshBuilder 的东西(在 webglue.js 中)和 C 中的固定函数模拟。MeshBuilder 使它相对通过使用基本相同的调用来填充可以重新使用的缓冲区,可以轻松地将开始/结束样式的 GL 代码移植到现代 GL。我们使用了类似的方法将 Quake II 移植到 WebGL(但使用 Java/GWT 而不是 C)

关于c++ - 将 OpenGL 1.x 代码移植到 WebGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21913929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com