初来乍到,问个问题:怎样直接写屏(不通过OPENGL、DIRECTX等)?(100分)

B

bbw

Unregistered / Unconfirmed
GUEST, unregistred user!
好像OPENGL也就几个dll,怎样不用这些东西就可以直接写屏?
或者问题是:怎样写个类似OPENGL可以直接写屏的东东?

不懂图形,初次提问,请高手不要笑话。
 
在OnPaint中操作TCanvas?这是通过GDI写屏,我想[red]直接写屏[/red]啊!
 
先学汇编吧[:D][:D]
然后看MS的SDK
 
原理不一样吧,SDK最多通过GDI
 
你也太高难度了吧!
象OPENGL那样!你只是说说吧!
我用OPENGL,但我没有想过自己写屏!
看来你比我领先了!
 
可以得到屏幕的句柄,然后用GDI画。
具体我回去翻翻书[:D][:D]
 
用GDI在速度上没有DirectX快
 
我不是高手啊~[:(]

就是因为速度上的原因,才不用GDI,但又不想用OPENGL、DirectX,更糟糕的是,自己想
直接写屏,连从哪入手都不知,有人知道吗?
 
通过BIOS中断调用编程实现直接对显卡操作
 
能不能给个小例子啊?
 
同意楼上
只要你不怕麻烦,最快,效率最好还是汇编,学汇编吧
 
给个例子吧,用汇编也好,在屏幕上画个小点,也好让我知道从哪里入手啊~
 
首先要能进入 ring 0 特权级,然后直接写显示缓存就行了。
 
要写驱动罗,对了,你可以用DIRECT X吗,他干的还不错,要不然为什么那么多游戏都用
他来写现存
 
DirectX 和 OpenGL 是由硬件支持的.
 
行不通,否则微软根本不需要提供 DirectX/OpenGL。
如果真正要,那应该是系统级的编程了 ------- 我的猜想。
 
都是光说的呀~
 
在 {$R *.REG} 后面加入:
{$D SCRNSAVE 我写的屏保} //"我写的屏保" 显示在 显示/属性 中

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
{$D SCRNSAVE 我写的屏保}
begin
if hPrevInst=0 then //当前实例是唯一的
begin
if (ParamCount>0) and
(UpperCase(ParamStr(1))='/S') then //激活状态
begin
Application.Ininialize;
......
......
//运行屏保程序
end
else
begin
//在这里加入设置代码
end;
Application.Run;
end;
end.
 
顶部