【问题标题】:Direct video card access直接视频卡访问
【发布时间】:2010-05-28 17:35:20
【问题描述】:

伙计们,我正在尝试用 C# 编写一个可以直接替代 C# Bitmap 类的类。不过,我想做的是使用显卡的功能在位图上执行所有图形功能。据我了解,DrawLine 或 DrawArc 或 DrawText 等函数是使用简单的 cpu 数学算法来执行工作的原始函数。相反,我想使用显卡 cpu 和内存来完成这些和其他高级功能,例如为位图蒙皮(应用纹理)和真正的透明度。我的问题是,在 C# 中,我如何访问直接视频功能?有图书馆或我需要的东西吗?

【问题讨论】:

    标签: c# .net winforms graphics video


    【解决方案1】:

    DirectX 或 OpenGL。我个人更喜欢 OpenGL,尤其是对于您所说的操作级别。

    您想在幕后执行此操作,还是实时执行此操作(例如,对于游戏或照片编辑程序?)这可能会对您应该使用哪个库产生影响。

    【讨论】:

    • 我更喜欢在幕后进行。 DirectX 和 OpenGL 是唯一的出路吗?我希望没有这些库的复杂性。
    • OpenGL 和 DirectX 几乎是解决此问题的最简单方法。他们封装了稍微复杂一点的视频驱动程序接口,如果你问这个问题,你不想进入。 OpenGL 一点也不复杂,网上有很多很多教程。
    • 你能用 Open GL 和 DirectX 做到这一点吗?我认为您需要 C++ Amp 或 Cuda 之类的东西才能将结果返回给 CPU?
    • @AndreasReiff CUDA 和 C++ 实际上只用于一般计算,尽管使用 CUDA/OpenGL 互操作,您可以有效地在 CL 或 CUDA 中编写着色器。但是,DX 和 GL 都允许您从您生成的 GPU 中读取任何内容。在其他语言问世之前,人们曾经在 OpenGL 和 GLSL 中进行一般计算。
    【解决方案2】:

    你的意思是DirectX

    【讨论】:

    • 我不想处理 DirectX 的复杂性。我希望能够调用 MyNewBitmapClass.DrawLine(5,10,15,20) 并让它隐藏所有这些复杂的细节
    • @icemanind 这正是你可以用 DirectX 做的事情,就像你的 DrawLine 方法中发生的事情一样。无论您基本上需要选择 DirectX 还是 OpenGL,如果没有这些框架,任何人都不可能希望在任何合理的时间内实现您需要的功能。
    • @Chris 谢谢,我想我会复习一下我的 DirectX 技能。进入如此恐怖的世界!大声笑
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多