首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 其他开发语言 >

C# 与OPenGL 字符输出有关问题

2012-03-16 
C# 与OPenGL 字符输出问题!c代码:#include windows.h// ASCII字符总共只有0到127,一共128种字符#define

C# 与OPenGL 字符输出问题!
c代码:
#include <windows.h>

// ASCII字符总共只有0到127,一共128种字符
#define MAX_CHAR 128

void drawString(const char* str) {
  static int isFirstCall = 1;
  static GLuint lists;

  if( isFirstCall ) { // 如果是第一次调用,执行初始化
  // 为每一个ASCII字符产生一个显示列表
  isFirstCall = 0;

  // 申请MAX_CHAR个连续的显示列表编号
  lists = glGenLists(MAX_CHAR);

  // 把每个字符的绘制命令都装到对应的显示列表中
  wglUseFontBitmaps(wglGetCurrentDC(), 0, MAX_CHAR, lists);
  }
  // 调用每个字符对应的显示列表,绘制每个字符
  for(; *str!='\0'; ++str)
  glCallList(lists + *str);
}
我自己的c#代码:
  int isFirstCall = 1;
  uint lists;
  uint MAX_CHAR = 128;
 private void glPrint(OpenGL gl,string text)
  {
  if( isFirstCall == 1 )// 如果是第一次调用,执行初始化
  { 
  // 为每一个ASCII字符产生一个显示列表
  isFirstCall = 0;
  // 申请MAX_CHAR个连续的显示列表编号
  lists = gl.GenLists((int)MAX_CHAR);
   
  // 把每个字符的绘制命令都装到对应的显示列表中
  wglUseFontBitmaps(wglGetCurrentDC(), 0, MAX_CHAR, lists);
   
  }
  // 调用每个字符对应的显示列表,绘制每个字符
  for (int i = 0; i < text.Length; i++)
  {
   
  gl.CallList(lists);
  }
   
  }
错在那里了,字符就是出不来?请大虾们给看看!谢谢啦!

[解决办法]
LZ,那你就修改下最后调用函数哪里的形参,glCallList(lists + *str);
和gl.CallList(lists);是有区别的,你按照我说的修改下,因为你里面有些调用的函数
我不知道函数里面会不会有字符处理的问题,从你贴出的代码可以看出应该是在回调list
哪里的时候参数不一致。。

热点排行