OpenGL学习笔记 – glutTimerFunc

[cc lang=’c’]
#include
#include #include

GLfloat rotf = 0.0f;

void myDisplay(void)
{
glClearColor(1,1,1,1);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0,0,1);
glRotatef(rotf,0.0f,1.0f,0.0f);
glutWireTeapot(0.5);
glFlush();
}

void TimerFunction(int p)
{
rotf-=0.1;
glutPostRedisplay();
glutTimerFunc(33,TimerFunction,0);
}

int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow(“OpenGL APP”);
glutDisplayFunc(&myDisplay);
glutTimerFunc(33, TimerFunction, 1);
glutMainLoop();
return 0;
}
[/cc]

这个程序想达成的目的就是画个茶壶,让他自己在那沿着Y轴转动。出现的问题是转速越来越快。

解决办法是:

[cc lang=’c’]
void myDisplay(void)
{
glClearColor(1,1,1,1);
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(rotf,0.0f,1.0f,0.0f);
glColor3f(0,0,1);
glutWireTeapot(0.5);
glPopMatrix;
glFlush();
}
[/cc]

在显示程序段加入矩阵堆栈,使得每次渲染前,茶壶的初始矩阵被压入堆栈,起到保护初始状态的作用,同时每一个循环中旋转角度增加,每次渲染事glRotatef()函数的第一个参数增大,实现旋转效果。

另外一个解决办法则是将计时器函数中的旋转角度变化去掉,在定义时将旋转角度设为一常量,并不使用矩阵堆栈,则可以实现匀速转动。

代码如下
[cc lang=’c’]
#include
#include #include

GLfloat rotf = 1.0f;

void myDisplay(void)
{
glClearColor(1,1,1,1);
glClear(GL_COLOR_BUFFER_BIT);
glRotatef(rotf,0.0f,1.0f,0.0f);
glColor3f(0,0,1);
glutWireTeapot(0.5);
glFlush();
}

void TimerFunction(int p)
{
glutPostRedisplay();
glutTimerFunc(33,TimerFunction,1);
}

int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow(“OpenGL APP”);
glutDisplayFunc(&myDisplay);
glutTimerFunc(33, TimerFunction,1);
glutMainLoop();
return 0;
}
[/cc]

2010.11.30
标签:
Category:未分类
4,093 views
1 Comment

关于TP-LINK的WDS设置

搞了两台TP-LINK的路由准备搭WDS扩展覆盖空间

在网上查了一些教程,基本都是讲“互填SSID、MAC地址,互相输入网络密码”等

在两台路由的WDS设置页面互相填入对方路由的信息,发现两台路由开始无尽地死机,一次死一台,不一定谁干死谁

后来尝试只在从路由(SLAVE)上设置WDS填入主路由的信息,成功

具体方法如下:

1.主路由

– 一切设置与正常上网一样

2.从路由

– SSID与主路由不同

– 关闭DHCP(即分配IP服务)功能

– 路由IP地址与主路由不同

– 在WDS设置中填写主路由SSID, 加密类型, 密码

– 设置信道与主路由相同

然后重启路由器即可

 

UPDATE 2011/5/27:其实也可以两个路由的SSID都一样,但是需要保证两台路由的加密方式和密码都一致,这样就能实现网间漫游啦~~更方便哈~

2010.11.10
标签: ,
Category:数自计
5,598 views
No Comments

对EXCEL表格进行横向纵向转换

这个蛋疼东西有点像矩阵的转置

1.选定需要转换的部分的表格,复制。

2.在需要放置转换后表格的位置,右键单击,选择“选择性粘贴”。

3.在弹出对话框中,右下角有一“转置”复选框,勾选,确定。

完成

2010.08.25
标签:
Category:数自计
1,374 views
No Comments

vbscript应用实例 – 人人网自动收菜功能

死循环的,所以使用前需要开开任务管理器以便在使用结束后杀掉wscript.exe进程

每4分钟一巡,只有收自己家菜的功能,不能除草除虫浇水偷菜种菜,只适用于夜里熟怕人偷的情况。在使用前需要打开一个浏览器并且登陆手机版的人人网http://m.renren.com/,登陆账号以后运行VBS,然后切换到浏览器界面,保证ALT+D操作可以使光标跳转到地址栏。4分钟以后就会开始第一次的自动收菜。

将以下代码保存为.vbs的文件,双击即可开始使用。建议有一定VBS基础的人使用,出问题我不负责……

More >>

2010.05.10
标签:
Category:数自计
760 views
No Comments

关于VBscript中SENDKEY功能的一点笔记

[cc lang=”vb”]

Dim WshShell
Set WshShell=WScript.CreateObject(“WScript.Shell”)
WshShell.Run “notepad”
WScript.Sleep 200
WshShell.AppActivate ” 无标题 – 记事本 ”
WshShell.SendKeys “hello, welcome to yynotes.net”

[/cc]

上面这一段包含了SENDKEY使用环境的定义以及一个小实例

1.基本键

一般来说,要发送的按键指令都可以直接用该按键字符本身来表示,例如要发送字母”x”,使用
WshShell.SendKeys “x” 即可.

也可直接发送多个按键指令,只需要将按键字符按顺序排列在一起即可.例如,要发送按键”cfan”,可以使用” WshShell.SendKeys “cfan” ”

2.特殊功能键
对于需要与Shift、Ctrl、Alt三个控制键组合的按键SendKeys使用特殊字符来表示:
特殊控制键 特殊字符
Shift  +
Ctrl    ^
Alt     %

如要发送的组合按键是同时按下Ctrl+E,需要用” WshShell.SendKeys “^e” “表示,如果要发送的组合按键是按住Ctrl键的同时按下E与C两个键,这时应使用小括号把字母括起来,书写格式为” WshShell.SendKeys “^(ec)” “.这里要注意它与” WshShell.SendKeys “^ec” “的区别,后者表示组合按键是同时按住Ctrl和E键,然后松开Ctrl键,单独按下”C”字母键

由于”+”、”^”这些字符用来表示特殊的控制按键了,如何表示这些按键呢?只要用大括号括住这些字符即可.例如,要发送加号”+”,可使用” WshShell.SendKeys “{+}” “.另外对于一些不会生成字符的控制功能按键,也同样需要使用大括号括起来按键号名称,例如要发送回车键,需要用” WshShell.SendKeys “{ENTER}” “表示,发送向下的方向键用” WshShell.SendKeys “{DOWN}” “表示.

附上一些KEY CODE

Key Code
——————————
Shift    +
Ctrl    ^
Alt    %
BACKSPACE   {BACKSPACE}, {BS}, or {BKSP}
BREAK    {BREAK}
CAPS LOCK   {CAPSLOCK}
DEL or DELETE {DELETE} or {DEL}
DOWN ARROW   {DOWN}
END     {END}
ENTER    {ENTER}or ~
ESC     {ESC}
HELP     {HELP}
HOME     {HOME}
INS or INSERT {INSERT} or {INS}
LEFT ARROW    {LEFT}
NUM LOCK    {NUMLOCK}
PAGE DOWN    {PGDN}
PAGE UP    {PGUP}
PRINT SCREEN   {PRTSC}
RIGHT ARROW   {RIGHT}
SCROLL LOCK   {SCROLLLOCK}
TAB    {TAB}
UP ARROW   {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}

WshShell.Run “notepad”
2010.05.10
标签:
Category:数自计
923 views
No Comments