自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (1)
  • 收藏
  • 关注

原创 KEngine KCamera

在写camera之前要确定camera要实现那些功能。camera的基本功能有:forward,back,left,right,up,down,turn left,turn rifht,turn up, turn down.这些功能都可以通过glLookAt函数来实现,glLookAt的前三个参数表示视点的位置,随后的三个参数表示要看的位置,最后三个参数表示哪个轴是表示向上。文中是另外一种实现

2010-04-15 12:44:00 364

原创 KEngine KBmpFont

位图字体也就是将字符保存在位图中,同样是为每个字符构造一个显示列表,显示列表中绘制个四边形并贴上代表每个字符的位图。这样每次调用显示列表的时候也就是在3d空间中绘制了一个基本图形。通过glBlendFunc(GL_ONE, GL_ONE), glEnable(GL_BLEND),启动混合将纹理的黑色背景去掉。因为绘制的是一个基本图形,参与深度测试,所以要关掉深度测试,glDisable(GL_DE

2010-04-15 09:56:00 322

原创 kengine2 glCallLists

GLuint index = glGenLists(10); // create 10 display listsGLubyte lists[10]; // allow maximum 10 lists to be renderedglNewList(index, GL_COMPILE); // compile the first one...g

2010-04-15 09:27:00 697

原创 kengine

从今天开始,我将每天用一个小时分析KEngine,一个3d引擎。由于第一次对一个引擎进行分析,将按文件在程序中的组织顺序逐个文件进行分析。首先是KBMPFont类文件。文中使用显示列表来创建位图字体,共产生256个显示列表,对应char类型所代表的所有字符。首先通过CreateFont创建字体。通过SelectObject为HDC选择字体。ascii基本可视集从十进制32开始.用wglUseF

2010-04-15 09:24:00 958

原创 加载纹理

MakeTexture(); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glGenTextures(1, &texName); glBindTexture(GL_TEXTURE_2D, texName); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, WIDTH, WIDTH, 0, GL_RGBA, GL_UNSIGNED_B

2010-03-20 12:32:00 441

原创 glBengin 与 glEnd位置不同导致的不同结果

for(int i = 0; i  {  glPushMatrix();  glTranslatef(fire.x, fire.y, 0.0f);  glRotatef(fire.fp[i].dir, 0.0f, 0.0f, 1.0f);  glColor3f(fire.fp[i].r, fire.fp[i].g, fire.fp[i].b);  glBegin(GL_POINTS);  gl

2010-03-16 16:18:00 521

原创 强制转换

(float)(rand() % 256) / 256;值为浮点数0~1rand() % 256 / 256;为0;

2010-03-16 15:53:00 220

原创 水波三

case WM_LBUTTONDOWN:  {   int x,z;   float dx,dz;   xpos = LOWORD(lParam);  // horizontal position of cursor    ypos = HIWORD(lParam);  // vertical position of cursor    dx=(float)fx/DIMX;   dz=(float

2010-03-11 16:26:00 385

原创 水波二

void Wave(void){ int i,j; float d; for(i=0; i for(j=0; j  force[i][j] = 0.0f; for(i=1; i for(j=1; j {  d=surf[i][j][1]-surf[i][j-1][1];  force[i][j] -= d;  force[i][j-1] += d;  d=surf[i][j][1]-s

2010-03-11 16:18:00 259

原创 水波

/* h = A*sin(2*pi*W*t)*/  int dx, dy; /* Disturbance Point */  float s, v, W, t;  int i, j;  dx = WSIZE >> 1;  dy = WSIZE >> 1;  W = 0.3;   v = -4; /* Wave speed */  for (i=0; i    for (j=0; j   

2010-03-11 14:08:00 466

原创 碰撞检测

float D0;  float D1;  D0 = g_vSpherePos.DotProduct(g_sQuads[i].vNormal) - g_sQuads[i].D;   // before movement  D1 = g_vSphereAfter.DotProduct(g_sQuads[i].vNormal) - g_sQuads[i].D; // after movement

2010-03-11 11:54:00 229

原创 限制帧频

Time2 = TimerGetTime()/1000;    DiffTime = ABS(Time2-Time1);    while (DiffTime     {      Sleep(1);      Time2 = TimerGetTime()/1000;      DiffTime = ABS(Time2-Time1);         }   Time1 = TimerGetTim

2010-03-10 16:49:00 331

原创 noise

float a, b, length, alpha; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); // Disable depth buffer filling glDepthMask(GL_FALSE); // Start drawing our random lines (polygons

2010-03-10 15:11:00 371

原创 花瓶

int x,y; float rg=2,an=0; float xf,yf,zf,dan=(float)366/BUFDX;  // Init the array for the Vase for(y=0;y {  rg=rg+(cos((double)an*3.141/180)+sin((double)an*3.141/180)+cos((double)an*6.141/180)*sin((do

2010-03-10 09:48:00 318

原创 特效之火

Vector Colore(float col) // Calculate the color for the fire effect{ int ki; Vector kf; ki=(int)(col*256); if(ki {  kf.x=(float)ki/2;  kf.y=(float)ki/4;  kf.z=0; } else {  if(ki  {   kf.x=(float)ki/

2010-03-09 10:28:00 331

原创 loading 特效

float ColorePannello(float k){ // Calculates the color of the loading panel (the moving white light) k=1-k/var.fattpannello;//var.fattpannello是逐渐减小的,也就是说对于同一个传进来的参数k,返回值逐渐减小。也就是偏于0.                 

2010-03-09 09:23:00 212

原创 纹理

当仅有一个纹理对象时,无需调用glGenTexture()和glBindTexture();

2010-03-09 09:14:00 238

原创 设置透明度

设置带纹理的物体的透明度有两种方式:1,使用glColor4f();通过设置alpha分量改变物体的透明度。2,通过设置纹理的alpha分量改变纹理的透明度。如果纹理没有alpha分量,通过函数添加alpha分量。 int CTexture::AddAlphaLayer(unsigned char alpha) // 0 - 255{ // Alloc memory unsig

2010-03-08 14:18:00 492

原创 关照 法线

一直以来有个问题,就是在绘制物体的时候在启用光照的情况下感觉光照的位置跟着物体改变,今天终于知道这是因为没有设置法线的问题。所以,在绘制多边形时最好指定其法线,这样才能更好的表现光照和材质效果,如果未指定法线,一种情况会是如果窗口最小化,之后还原,多边形的颜色将会发生意想不到的情况。如果指定法线,在球体中指定关照材质的情况下将会表现出真实的效果。

2010-03-08 11:25:00 249

原创 antialiasing

反走样一般的方法如下:glEnable(GL_LINE_SMOOTH);glEnable(GL_BLEND);glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);glLineWidth(num);

2010-03-08 10:46:00 413

原创 光照

实现隐藏面消除的最好方法是使用深度缓冲区。深度缓冲区的原理就是把一个距离观察平面的深度值与窗口中的每个像素相关联。一开始,以GL_DEPTH_BUFFER_BIT为参数使用glClear()函数,把所有像素的深度值设置为最大可能的距离。随后,在场景中以任意顺序绘制所有的物体。硬件或软件所执行的图形计算把每个被绘制的表面转换为窗口上一些像素的集合,此时并不考虑他们是否会被其他物体所遮挡。此外,还要计

2009-11-21 12:56:00 364

原创 windows ce 嵌入式系统读书笔记(一)

 引导程序BootLoader是在硬件开发板上执行的一段代码,它的主要功能是初始化硬件,加载操作系统映像到内存,然后跳转到操作系统代码去执行。BootLoader可通过串口、usb、以太网下载;BootLoader也可以从本地的存储设备,例如cf卡和硬盘中读取操作系统映像。当BootLoader得到操作系统映像后,它可把操作系统映像存放到内存里或者本地的存储设备中以便以后使用。当引导程序引导操作系

2009-09-22 13:54:00 635

原创 初始化

无论是局部变量还是全局变量一定要初始化。最近在写数据库以及使用wm_copydata在进程间传递数据时因为没有对变量进行初始化而出现了莫名其妙的错误,导致不能添加多一点代码,这些后来添加的代码跟数据库操作无任何关系,一旦添加这些代码,数据库便不可用无法添加数据,当对变量进行初始化后,一切正常。在opengles中当使用了某种状态而以后又不使用这种状态的话一定要关掉,如果不关掉也会出现非预料

2009-09-16 11:28:00 242

原创 小总

opengl是一个状态机,状态机的意思就是只要打开某种状态(使用glEnable()打开),后面将一直使用这种状态,知道调用glDisable()关闭状态。每种状态都有相应的初始化的过程,比如光照,设置环境光,漫反射光,镜面反射光等,这些工作可以在初始化opengl的时候进行,但直到调用glEnable(GL_LIGHTING),才可以使用关照,也就是说什么时候想用了,如果已经进行了初始化,只需在

2009-08-31 17:48:00 334

wince串口调试程序

很不错的串口调试程序,并附有源码,希望能给wince串口编程的朋友带来帮助。

2010-04-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除