最近,我开始用C语言实现CHIP-8仿真器。在实现了大部分操作码之后,我遇到了一个为仿真器实现显示的问题。在谷歌搜索和阅读之后,我解码给了OpenGL一次机会。这就是问题所在--显示信息以每像素1位的单色图像形式存储在CHIP-8内存的最后256字节中(内存是一个大小为4096的uint8_t数组)。当然,我可以创建另一个数组,用于以更易用的格式(每个像素1字节)存储显示数据,并通过OpenGL将其呈现为纹理,但我想知道的是,在现代OpenGL或其他可以在C编程语言中使用的库/框架中,是否有更优雅、更有效的解决方案。
提前谢谢你。
另外,英语不是我的母语,所以错误修复将不胜感激。
发布于 2019-08-18 06:42:19
在现代OpenGL中,您可以使用整数纹理和8位单通道图像格式。然后在着色器中,将快速运行的坐标除以8来确定纹理元素,并用余数来选择位,类似于GLSL中的内容
texelFetch(texture, ivec2(texcoord.x/8, texcoord.y), 0).x &
(1 << texcoord.x%8) != 0;我现在正在用手机,所以如果这太简洁了,请原谅。如果你需要更多的细节,尽管问吧!
https://stackoverflow.com/questions/57540314
复制相似问题