如何从头开始创建实时渲染窗口?

时间:2012-01-23 19:52:34

标签: graphics window rendering real-time

我一直在研究自己的3D图形一段时间了,我想更深入地了解一切是如何运作的。我想做的是在不使用DirectX或OpenGL的情况下创建一个简单的游戏。我理解我相信的大部分数学,但我遇到的问题是我不知道如何控制窗口中显示的像素。

如何在窗口中指定每个像素的颜色?

我知道我可能会遇到缓冲区和图像剪切以及可能是非常糟糕的效率问题,但是我想创建自己的程序,以便从最低级别的高级语言中看到渲染的方式过程有效。我真的不知道从哪里开始。我已经想出了如何输出BMP,但我希望有一个正在运行的程序每秒吐出20多帧。我该如何做到这一点?

3 个答案:

答案 0 :(得分:0)

我正在阅读您对从低级别完全控制渲染过程感兴趣的行,而不是特别关注如何在一个特定平台上实现这一点。

如果是这种情况,那么你可能会看到像SDL这样的库提供一个好的爆炸,它为你提供了一个可以直接呈现的帧缓冲区,但抽象了很多平台细节。的问题。它已经存在了很长一段时间,并且有一些很好的教程可以让你知道它是否是你正在寻找的东西 - 参见this tutorial以及同一系列中的后续版本,应该是足以让你开始运作。

答案 1 :(得分:0)

您可以选择一个环境,允许您使用像素值填充数组并将其显示为位图。这样,您最接近于在视频内存中调用RGB值。 WPF,Silverlight,HTML5 / Javascript都可以做到这一点。如果你不全屏,这些技术现在就足够了。

In WPF and Silverlight, use the WriteableBitmap.

In HTML5, use the canvas

然后由你来实现绘制直线,圆,贝松曲线,三维投影的逻辑。

这很有趣,你会学到很多东西。

答案 2 :(得分:0)

你说你想要创建某种渲染引擎,这意味着设置你自己的Pipeline和matrice类。您将使用它将3D坐标转换为2D点。

当你获得了2D点数时,你一直在寻找。你可以在windows上使用say,你可以选择一个画笔并在绘制三角形值时同时着色它们。

我不知道为什么你需要Bitmaps,但是如果你想练习说Texturing你也可以自己做,虽然在弱电脑上当然这可能会使你的帧每秒显着。

如果您的目标是了解渲染如何在最低级别上工作。毫无疑问,这是一种很好的做法。

Jt Schwinschwiga