游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1742|回复: 3

问个基本的问题,渲染函数的问题

[复制链接]

18

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
QQ
发表于 2005-11-7 16:33:00 | 显示全部楼层 |阅读模式
大家一般把渲染函数放到哪个位置
我一般放到消息循环后面
while(Msg.message != WM_QUIT)
{
      if(PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE))
     {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
      }
      // Render a single frame
      DoFrame();
}
这个我也不知道为什么放这个地方,是从教程上学来的
渲染每一帧的函数的速度跟时间到底有什么关系啊,消息循环每次执行一次的时间间隔是多少啊 ,每秒执行渲染函数的次数是多少~~具体怎么控制

18

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
QQ
 楼主| 发表于 2005-11-7 16:58:00 | 显示全部楼层

Re:问个基本的问题,渲染函数的问题

恩,有道理,
主要我最近看Advanced Animation with DirectX那本书,里面的关键帧函数有点半懂不懂的
void DoFrame()
{
  static DWORD StartTime = timeGetTime();
  DWORD ThisTime = timeGetTime();

  // Update the animation (convert to 30 fps)
  g_Anim.Update(NULL, (ThisTime-StartTime)*3, TRUE);

  // Rebuild the frame hierarchy transformations
  if(g_Frame)
    g_Frame->UpdateHierarchy();

  // Build the skinned mesh
  UpdateMesh(g_Mesh);

  // Calculate a view transformation matrix
  // Using the mesh's bounding radius to position the viewer
  float Distance = g_MeshRadius * 3.0f;
  float Angle = (float)timeGetTime() / 2000.0f;
  D3DXMATRIX matView;
  D3DXMatrixLookAtLH(&matView,
                     &D3DXVECTOR3((float)cos(Angle) * Distance, g_MeshRadius, (float)sin(Angle) * Distance),
                     &D3DXVECTOR3(0.0f, 0.0f, 0.0f),
                     &D3DXVECTOR3(0.0f, 1.0f, 0.0f));
  g_pD3DDevice->SetTransform(D3DTS_VIEW, &matView);

  // Set a world transformation
  D3DXMATRIX matWorld;
  D3DXMatrixIdentity(&matWorld);
  g_pD3DDevice->SetTransform(D3DTS_WORLD, &matWorld);

  // Clear the device and start drawing the scene
  g_pD3DDevice->Clear(NULL, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_RGBA(0,0,64,255), 1.0f, 0);
  if(SUCCEEDED(g_pD3DDevice->BeginScene())) {

    // Render skinned mesh
    DrawMesh(g_Mesh);

    // End the scene
    g_pD3DDevice->EndScene();
  }

  // Present the scene to the user
  g_pD3DDevice-&gtresent(NULL, NULL, NULL, NULL);
}

18

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
QQ
 楼主| 发表于 2005-11-7 17:04:00 | 显示全部楼层

Re:问个基本的问题,渲染函数的问题

我平时写渲染函数的时候就直接往消息循环队列后面一放,就自动刷新画面了,也没有具体管这个跟时间的关系,但现在开始看一些基于时间的animation的实现,比如关键帧骨骼动画,和曲线运动等,因为是英文版的,所以有些地方看不太懂,你们编写程序的时候有没有什么比较好的经验和建议分享一下,就是怎样把时间和运动联系起来,谢谢啦

18

主题

65

帖子

65

积分

注册会员

Rank: 2

积分
65
QQ
 楼主| 发表于 2005-11-7 17:16:00 | 显示全部楼层

Re:问个基本的问题,渲染函数的问题

教程是这样实现的,先用一个结构体数组保存关键帧序号和该关键帧物体所要进行的变换矩阵
if(消逝时间>Time)
渲染关键帧或者跳过该关键帧;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 13:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表