当前位置: 技术问答>linux和unix
有关VGA编程的问题(急)
来源: 互联网 发布时间:2014-12-19
本文导语: 请问大虾们现在我要在LINUX下进行vga的写入与读取操作,该调用那些函数,如果要看源码的话,又该看哪一部分呢? | 在 UNIX 系统下直接访问video ram(显存) 本文出自: http://go3.163.com/~axiom999/...
请问大虾们现在我要在LINUX下进行vga的写入与读取操作,该调用那些函数,如果要看源码的话,又该看哪一部分呢?
|
在 UNIX 系统下直接访问video ram(显存)
本文出自: http://go3.163.com/~axiom999/ (2001-06-18 13:04:00)
我们在 UNIX 系统下用 C 语言开发软件一般要用到光标功能控制库 curses, 但是使用 curses 编制的软件目标模块大, 执行速度慢. 我们可以绕过 curses, 直接访问视频内存 (video ram) 来实现
诸如定位显示, 显示区域保存及恢复, 色彩及动画等多种显示效果.本文通过直接访问 video ram 技术显示 54 张扑克牌.
程序清单:
#include "sys/types.h"
#include "sys/console.h"
#include "sys/vid.h"
#include "sys/ioctl.h"
#define HONGTAO 3
#define FANGKUAI 4
#define MEIHUA 5
#define HEITAO 6
#define XIAOWANG 1
#define DAWANG 2
#define HORIZON 196
#define VERTICAL 179
#define UPLEFT 218
#define UPRIGHT 191
#define DNLEFT 192
#define DNRIGHT 217
char *screen; /* video ram 地址 */
void cputc(), cputs();
void showcard();
char card();
main()
{
int i;
/* 设置 VGA 80X25 显示方式 */
if (-1==ioctl(0,SW_VGA80x25,0l)) {
perror("ioctl");
exit(1);
}
if ((screen=(char*)ioctl(0,MAPCONS,0l))==(char*)(-1)) {
perror("ioctl");
exit(2);
}
showcard(10,3,XIAOWANG); /* 显示大王 */
showcard(15,3,DAWANG); /* 显示小王 */
for (i=1;i
本文出自: http://go3.163.com/~axiom999/ (2001-06-18 13:04:00)
我们在 UNIX 系统下用 C 语言开发软件一般要用到光标功能控制库 curses, 但是使用 curses 编制的软件目标模块大, 执行速度慢. 我们可以绕过 curses, 直接访问视频内存 (video ram) 来实现
诸如定位显示, 显示区域保存及恢复, 色彩及动画等多种显示效果.本文通过直接访问 video ram 技术显示 54 张扑克牌.
程序清单:
#include "sys/types.h"
#include "sys/console.h"
#include "sys/vid.h"
#include "sys/ioctl.h"
#define HONGTAO 3
#define FANGKUAI 4
#define MEIHUA 5
#define HEITAO 6
#define XIAOWANG 1
#define DAWANG 2
#define HORIZON 196
#define VERTICAL 179
#define UPLEFT 218
#define UPRIGHT 191
#define DNLEFT 192
#define DNRIGHT 217
char *screen; /* video ram 地址 */
void cputc(), cputs();
void showcard();
char card();
main()
{
int i;
/* 设置 VGA 80X25 显示方式 */
if (-1==ioctl(0,SW_VGA80x25,0l)) {
perror("ioctl");
exit(1);
}
if ((screen=(char*)ioctl(0,MAPCONS,0l))==(char*)(-1)) {
perror("ioctl");
exit(2);
}
showcard(10,3,XIAOWANG); /* 显示大王 */
showcard(15,3,DAWANG); /* 显示小王 */
for (i=1;i