社区
Linux/Unix社区
帖子详情
急急急:怎么取得linux系统的分辨率
sfly47
2008-11-26 09:09:08
最近有个任务,要把win32中的程序移植到linux中,其中需要取系统的分辨率,但由于小弟我对linux编程不熟,想请教一下通过什么函数可以取linux系统的分辨率,万分感谢!!!
...全文
495
11
打赏
收藏
急急急:怎么取得linux系统的分辨率
最近有个任务,要把win32中的程序移植到linux中,其中需要取系统的分辨率,但由于小弟我对linux编程不熟,想请教一下通过什么函数可以取linux系统的分辨率,万分感谢!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zjpdhappy
2011-04-29
打赏
举报
回复
最近也涉及到这方面的知识,对frame buffer编程即可获得当前显卡缓冲区的分辨率数据
puheavy123
2009-06-18
打赏
举报
回复
cat /etc/X11/xorg.conf里面就有lz所需要的信息
zhouxingyu896
2009-06-17
打赏
举报
回复
学习
zjwumei
2009-06-17
打赏
举报
回复
好厉害呀
hanb99
2008-11-30
打赏
举报
回复
学习了
do_one_thing
2008-11-28
打赏
举报
回复
[Quote=引用 5 楼 chenzhixin 的回复:]
GDK可以用这个函数
gint gdk_screen_get_width (GdkScreen *screen);
gint gdk_screen_get_height (GdkScreen *screen);
单纯的C语言我不清楚
void
get_screen_size(int *width_p, int *height_p)
{
*width_p = DisplayWidth(dpy, screen) ;
*height_p = DisplayHeight(dpy, screen) ;
}
[/Quote]强
chenzhixin
2008-11-28
打赏
举报
回复
GDK可以用这个函数
gint gdk_screen_get_width (GdkScreen *screen);
gint gdk_screen_get_height (GdkScreen *screen);
单纯的C语言我不清楚
void
get_screen_size(int *width_p, int *height_p)
{
*width_p = DisplayWidth(dpy, screen) ;
*height_p = DisplayHeight(dpy, screen) ;
}
cjx_epop
2008-11-26
打赏
举报
回复
一、查看显卡相关信息
glxinfo | grep -i rend
direct rendering: Yes
运行这个命令,如果显示不是“Yes”,说明还需要自己去安装一下驱动(显卡)。
1、在linux的终端上执行:
[root@localhost ~]# glxinfo | grep -i rend
direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)
OpenGL renderer string: Mesa GLX Indirect
2、在txt模式下:
[root@localhost ~]# glxinfo | grep -i rend
Error:unable to open display
两者显示结果不一样,原因:
是X终端与文本模式(console)下区分,在console下,显卡驱动还没有启用,所以无法得到信息。
二、显示器分辨率及刷新率设置
1、X终端下显示器分辨率及刷新率设置
刷新率和分辨率可以在/etc/X11/xorg.conf中设置
(1)对显示器行频(水平分辨率)和场频(垂直分辨率)的设置
在xorg.conf中有类似一段:
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "206STUDIO"
HorizSync 30.0 - 70.0
VertRefresh 50.0 - 160.0
EndSection
其中HorizSync,VertRefresh分别是显示器行频(水平分辨率)和场频(垂直分辨率)的设置
应该根据显示器的性能进行设置,他们的值决定了显示分辨率和刷新频率可能取值的范围。
(2)对首先和可选分辨率的设置
在xorg.conf中有类似一段:
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1024x768" "800x600" "640x480" "1280x1024"
EndSubSection
EndSection
行 :
Modes "1024x768" "800x600" "640x480"
设置了三种可选的分辨率,排在最前面的就是首选的分辨率,也就是一般生效的分辨率。X启动时如果首选的分辨率无效,比如过高,会依次尝试后面的分辨率。
2、文本模式下显示器分辨率及刷新率设置
(1)、grub的:
/boot/grub/menu.lst 文件中
title Debian GNU/Linux, kernel 2.6.22-3-686
root (hd0,5)
kernel /vmlinuz-2.6.22-3-686 root=/dev/hda1 ro vga=794
initrd /initrd.img-2.6.22-3-686
savedefault
说明:
vga=794,修改此值可以修改在文本模式下的分辨率
vga=794 => 1280x1024x16
vga=788 => 800x600x16
(2)、lilo的基本也差不多。
三、内核不能识别出显示是否就进不了X-Windows ?
(1)显卡驱动:内核提供的驱动与显示供应商提供的驱动的差别在于3D,内核不认显卡是进不了X的,不过,可以用vesa的标准驱动,因为各个厂家提供的显卡都支持vesa的标准
(2)、信息用Xorg -configure 自动获取的
*********************************************************************************** Monitor本条目介绍了显示器的相关知识。 场频 场频又称为“垂直扫描频率”或“刷新率”。指单位时间(以秒计)之内电子枪对整个屏幕进行扫描的次数,通常以赫兹(Hz)表示。以85Hz刷新率为例,它表示显示器的内容每秒钟刷新85次。
CRT 显示器上显示的图像是由很多荧光点组成的,每个荧光点都由于受到电子束的击打而发光,不过荧光点发光的时间很短,所以要不断地有电子束击打荧光粉使之持续发光。
电子束不能同时轰击屏幕上的两个点,因此显示器在工作时,以极快的速度从视频卡读取数据,同时由电子枪的偏转电路部分控制偏转线圈对电子束射出的方向进行改变,使电子束从屏幕左上角开始,从左至右,从上至下,依次对每个点进行轰击,虽然时间上有先后顺序。
但由于电子束把屏幕整个扫描一次只需 10~20ms的时间,加上荧光体的辉光残留和人眼的视觉暂留现象,所以只要刷新够快,刷新率够高,人眼就能看到持续、稳定的画面,不会感觉到明显的闪烁和抖动。垂直扫描频率越高,闪烁情况越不明显,眼睛也就越不容易疲劳。
从理论上来讲,只要刷新率达到85Hz,也就是每秒刷新85次,人眼就感觉不到屏幕的闪烁了,但实际使用中往往有人能看出85Hz刷新率和100Hz刷新率之间的区别,所以从保护眼睛的角度出发,刷新率仍然是越高越好。
行频 行频又称为“水平扫描频率”,指电子枪每秒在荧光屏上扫过的水平线的数量,其值等于“场频 × 垂直分辨率×1.04”,单位为KHz(千赫兹)。行频是一个综合分辨率和场频的参数,该值越大,显示器可以提供的分辨率越高,稳定性越好。
以 800*600 的分辨率、85Hz的场频为例,显示器的行频至少应为“600*85=51KHz”。
目前CRT显示器比较主流的行频系列是:70KHz,85(86)KHz,96KHz等。
windows是用场频和分辨率来表示显示模式,而Linux的X配置文件里面同时用到用场频和行频和分辨率三个参数。
警告:
老的或某些显示器缺乏保护电路,参数设置错误可能造成硬件损坏。
注:
窗体在桌面中显示不正,但在WINDWOS中显示正中。不调整显示器面板按钮办法:
(1)输入命令:xvidtune
(2)调整Left/Right;Up/Down
(3)test
(4)show 输出到终端中。
(5)apply
(6)复制输出内容至/etc/X11/xorg.conf中,在Section "Monitor"
中添加ModeLine 输出内容
在Section "Screen"中添加Model内容。
(6)重启X
详细如下:
# Xorg configuration created by system-config-display
Section "ServerLayout"
Identifier "single head configuration"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "us+inet"
EndSection
Section "Monitor"
#hsync range 0: 30.00 - 70.00
#vsync range 0: 50.00 - 160.00
Identifier "Monitor0"
ModelName "Samsung Samtron 76DF(X)/77DF(X)/78DF"
HorizSync 30.0 - 70.0
VertRefresh 50.0 - 160.0
ModeLine "1024x768" 94.5 1024 1088 1184 1376 768 769 772 808 +hsync +vsync
Option "dpms"
EndSection
Section "Device"
Identifier "Videocard0"
Driver "nv"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 16
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 32
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768" "832x624" "800x600" "720x400" "640x480" "640x400" "640x350"
EndSubSection
EndSection
你可以写程序读该配置文件,然后用read读该配置文件中的分辨率,通过strstr判断分辨率的关键字。
shang12
2008-11-26
打赏
举报
回复
分别率..你不知道LINUX很多都是有配置文件的么?你应该去找找Xwindow里面的配置文件...不知对的对的窝..我以前有去改过但是忘了在哪了..
sfly47
2008-11-26
打赏
举报
回复
自己顶起来,各位大哥帮帮忙呀!
android2008
2008-11-26
打赏
举报
回复
不懂,帮顶
linux
6.5双屏显示,Redhat 6.5的
系统
如何设置双显示屏,
急
急
急
!
设置双显示器
分辨率
的方法:1、在桌面空白处点击右键选择Graphics Options->Output To可以看到双显示器有两种输出,分别是Clone Displays(双显复制)即两个显示器的显示内容完全一致,和Extended Desktop(扩展桌面...
结束24秋招&;面经分享&;即将到来的博士答辩
投递岗位:OPPO,安卓客户端开发(似乎也有安卓
系统
开发的方向)投递时间:OPPO的校招8月份就开始了,我是9月上旬投递的,9月中旬得到了笔试机会。双非本211硕,计算机科班生,秋招从8月份开始投了130家,目前仅收到...
Intel面试题
急
急
忙忙地在实验室吃完我的早饭,跑到楼下,发现蒙109门口已经排起了队。进去后 拿到考卷,发现又有智力题,晕啊。基本上没找到规律,连蒙带猜地做完,心想这回要挂 了。 下午...
java开发速成班培训课程(1)
[url=http://www.buildapp.net/java/show.asp?id=12347]
急
急
急
!!!调用类java.Lang.Math的成员方法...... (悬赏:<font color=red><b>16</b></font>分)[/url] [url=...
[每日100问][2011-10-01]iphone开发笔记,今天你肿了么
[url=http://www.buildapp.net/android/show.asp?id=26657](
急
急
急
)应用中开启飞行模式然后 关闭然后在进应用就会卡[/url] [url=http://www.buildapp.net/android/show.asp?id=26656]关于convas绘图事件响应问题...
Linux/Unix社区
23,116
社区成员
74,506
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章