Re[2]: wglUseFontBitmaps
От: burunduk  
Дата: 15.12.05 10:58
Оценка:
не знаю, что я делаю не так, но только краказябры на экране
Причем заметил что таких краказябр даже нету в устанавливаемом фонте Courier.
При замене на Arial или Times внешний вид краказябр соотв. меняется.

class MyWidget : public QGLWidget {
protected:
  void initializeGL() {
    glClearColor(1,1,1,1);
    BuildFont();  
  }
  void paintGL() {
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);    
    glLoadIdentity();
    glTranslatef(0.0f,0.0f,-6.0f);
    glColor3f(0,0,0);
    glRasterPos2f(-0.5f,0.0f);
    glListBase(base);
    glCallLists(5, GL_UNSIGNED_BYTE, "БУКВА");

  }
  void resizeGL(int width, int height) {
    glViewport(0,0,width,height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
  }
private:
  void BuildFont() {
      HFONT    font;
      HFONT    oldfont;
      base=glGenLists(2000);
      font = CreateFont(-24,
                          0,
                          0,
                          0,
                          FW_NORMAL,
                          false,
                          false,
                          false,
                          ANSI_CHARSET,
                          OUT_TT_PRECIS,
                          CLIP_DEFAULT_PRECIS,
                          ANTIALIASED_QUALITY,
                          FF_DONTCARE|DEFAULT_PITCH,
                          L"Courier");
      
      HDC hDC = wglGetCurrentDC();
      oldfont = (HFONT)SelectObject(hDC,font);
                        
      if(!wglUseFontBitmaps(hDC,0,2000,base)) {
        cout << "wglUseFontBitmaps error" << endl;
      }
      SelectObject(hDC,oldfont);
      DeleteObject(font);
  }

};


STC>Конечно, возможно.

STC>Поставь lfCharSet = ANSI_CHARSET и выбери шрифт, который имеет кириллицу, например, lfFaceName = "Courier"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.