是为图形输出选择激活页 。所谓激活页是指后续图形的输出被写到函数选定的
pagenum页面, 该页面并不一定可见 。setvisualpage()函数才使pagenum 所指定
的页面变成可见页 。页面从0开始(Turbo C默认页) 。如果先用setactivepage()
函数在不同页面上画出一幅幅图像,再用setvisualpage()函数交替显示, 就可以
实现一些动画的效果 。
void far getimage(int xl,int yl, int x2,int y2, void far *mapbuf);
void far putimge(int x,int,y,void * mapbuf, int op);
unsined far imagesize(int xl,int yl,int x2,int y2);
这三个函数用于将屏幕上的图像复制到内存,然后再将内存中的图像送回到
屏幕上 。首先通过函数imagesize()测试要保存左上角为(xl,yl), 右上角为(x2,
y2)的图形屏幕区域内的全部内容需多少个字节, 然后再给mapbuf 分配一个所测
数字节内存空间的指针 。通过调用getimage()函数就可将该区域内的图像保存在
内存中, 需要时可用putimage()函数将该图像输出到左上角为点(x, y)的位置上,
其中getimage()函数中的参数op规定如何释放内存中图像 。
对于imagesize()函数, 只能返回字节数小于64K字节的图像区域, 否则将会
出错, 出错时返回-1 。
本节介绍的函数在图像动画处理、菜单设计技巧中非常有用 。
例13:下面程序模拟两个小球动态碰撞过程 。
7. 图形模式下的文本输出
在图形模式下, 只能用标准输出函数, 如printf(), puts(), putchar() 函
数输出文本到屏幕 。除此之外, 其它输出函数(如窗口输出函数)不能使用, 即是
可以输出的标准函数, 也只以前景色为白色, 按80列, 25行的文本方式输出 。
Turbo C2.0也提供了一些专门用于在图形显示模式下的文本输出函数 。下面
将分别进行介绍 。
一、文本输出函数
void far outtext(char far *textstring);
该函数输出字符串指针textstring所指的文本在现行位置 。
void far outtextxy(int x, int y, char far *textstring);
该函数输出字符串指针textstring所指的文本在规定的(x, y)位置 。其中x
和y为象元坐标 。
说明:
这两个函数都是输出字符串, 但经常会遇到输出数值或其它类型的数据,
此时就必须使用格式化输出函数sprintf() 。
sprintf()函数的调用格式为:
int sprintf(char *str, char *format, variable-list);
它与printf()函数不同之处是将按格式化规定的内容写入str 指向的字符串
中, 返回值等于写入的字符个数 。
例如:
sprintf(s, "your TOEFL score is %d", mark);
这里s应是字符串指针或数组, mark为整型变量 。
求代码注释:计算机图形学的OpenGL画四面体 。高手来吧 。争取每句都注释下 。谢谢#include gl/glut.h
#define WIDTH 400
#define HEIGHT 400
#include math.h
#define ColoredVertex(c, v) do{ glColor3fv(c); glVertex3fv(v); }while(0)//这段就不用解释了吧……
GLfloat angle = 0.0f; //设定转角
void myDisplay(void)//绘图函数
{
static int list = 0;
if( list == 0 )
{
// 如果显示列表不存在,则创建
GLfloat//GLfloat为OpenGL用到的数据类型,与C的float基本一致
PointA[] = {-0.5, -5*sqrt(5)/48, sqrt(3)/6},//此处为4个顶点的坐标 , 因为时3D坐标系下的,所以每个坐标有3个分量 , 分别对应X,Y,Z轴 。至于各轴方向定义……默认下屏幕水平为X , 竖直为Y,里外为Z 。
PointB[] = { 0.5, -5*sqrt(5)/48, sqrt(3)/6},
PointC[] = { 0, -5*sqrt(5)/48, -sqrt(3)/3},
PointD[] = { 0, 11*sqrt(6)/48, 0};
/*GLfloat
PointA[] = { 0.5f, -sqrt(6.0f)/12, -sqrt(3.0f)/6},
PointB[] = {-0.5f, -sqrt(6.0f)/12, -sqrt(3.0f)/6},
推荐阅读
- redis怎么集成哨兵,redis哨兵加集群
- 微信视频号直播中如何上链接,微信视频号直播如何上链接呢
- redis数据库的备份,redis数据备份如何实现
- 当我问chatgpt地外文明,地外文明已收到
- java语言代码明细 javagui代码
- java代码函数调用关系,java的调用
- 游戏推荐动作冒险免费,动作冒险端游推荐
- 快手直播屏录,快手直播录屏在哪开
- linux下打包解压命令 linux打包压缩文件命令