Форум программистов, компьютерный форум CyberForum.ru

OpemGL Text draw - C++

Восстановить пароль Регистрация
 
MelKiY
-121 / 2 / 1
Регистрация: 20.09.2009
Сообщений: 101
29.10.2010, 14:46     OpemGL Text draw #1
привет!

Нужна помощь с распределением текста в OpenGL на другом окне как в FRAPS.

Я везде искал и ничего нету... plz напешите для меня код pLIIIIIZZ

Зарание спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2010, 14:46     OpemGL Text draw
Посмотрите здесь:

C++ Text -> File.txt -> Console
Static Text в visual c++ C++
Очистка Text у ComboBox C++
C++ Text file
C++/CLI WinForms Получить значение TextBox->Text в переменную
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
29.10.2010, 16:23     OpemGL Text draw #2
Уроки по OpenGL.
MelKiY
-121 / 2 / 1
Регистрация: 20.09.2009
Сообщений: 101
30.10.2010, 14:58  [ТС]     OpemGL Text draw #3
я читал это там нет того чего мен нужно а мне нужен простой пример вывода текста на другое окно с OpenGL

Добавлено через 40 минут
Код
HDC        hDC=NULL;  // Приватный контекст устройства GDI
HGLRC      hRC=NULL;  // Постоянный контекст рендеринга
HWND       hWnd=NULL; // Сохраняет дескриптор окна
HINSTANCE  hInstance; // Сохраняет экземпляр приложения
GLuint  base;      // База списка отображения для фонта
GLfloat  cnt1;     // Первый счетчик для передвижения и закрашивания текста
GLfloat  cnt2;     // Второй счетчик для передвижения и закрашивания текста

bool  keys[256];      // Массив для работы с клавиатурой
bool  active=TRUE;    // Флаг активации окна, по умолчанию = TRUE
bool  fullscreen=TRUE;// Флаг полноэкранного режима
LRESULT  CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);  // Объявление WndProc

GLvoid BuildFont(GLvoid)  // Построение нашего растрового шрифта
{
HFONT  font;
base = glGenLists(96);
font = CreateFont( -24,0,0,0,FALSE,FALSE,FALSE,ANSI_CHARSET,OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,ANTIALIASED_QUALITY,FF_DONTCARE|DEFAULT_PITCH,NULL,"Courier New");
SelectObject(hDC, font);        // Выбрать шрифт, созданный нами ( НОВОЕ )
wglUseFontBitmaps(hDC, 32, 96, base); // Построить 96 символов начиная с пробела ( НОВОЕ )
}

GLvoid KillFont(GLvoid)            // Удаление шрифта
{
glDeleteLists(base, 96);        // Удаление всех 96 списков отображения ( НОВОЕ )
}

GLvoid glPrint(const char *fmt, ...)        // Заказная функция «Печати» GL
{
char    text[256];      // Место для нашей строки
va_list    ap;          // Указатель на список аргументов
if (fmt == NULL)     // Если нет текста
return;            // Ничего не делать
va_start(ap, fmt);           // Разбор строки переменных
vsprintf(text, fmt, ap); // И конвертирование символов в реальные коды
va_end(ap);                  // Результат помещается в строку
glPushAttrib(GL_LIST_BIT);      // Протолкнуть биты списка отображения ( НОВОЕ )
glListBase(base - 32);          // Задать базу символа в 32 ( НОВОЕ )
glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);// Текст списками отображения(НОВОЕ)
glPopAttrib(); // Возврат битов списка отображения ( НОВОЕ )
}

int InitGL(GLvoid)            // Все начальные настройки OpenGL здесь
{
glShadeModel(GL_SMOOTH);    // Разрешить плавное затенение
glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Черный фон
glClearDepth(1.0f);         // Установка буфера глубины
glEnable(GL_DEPTH_TEST);    // Разрешение теста глубины
glDepthFunc(GL_LEQUAL);     // Тип теста глубины
// Действительно хорошие вычисления перспективы
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
BuildFont();            // Построить шрифт
return TRUE;            // Инициализация окончена
}

int DrawGLScene(GLvoid) // Здесь мы будем рисовать все
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Очистка экран и буфера глубины
glLoadIdentity(); // Сброс просмотра
glTranslatef(0.0f,0.0f,-1.0f); // Передвижение на одну единицу вглубь
// Цветовая пульсация, основанная на положении текста
glColor3f(1.0f*float(cos(cnt1)),1.0f*float(sin(cnt2)),1.0f-0.5f*float(cos(cnt1+cnt2)));
// Позиционирование текста на экране
glRasterPos2f(-0.45f+0.05f*float(cos(cnt1)), 0.35f*float(sin(cnt2)));
glPrint("Active OpenGL Text With NeHe - %7.2f", cnt1);  // Печать текста GL на экран
cnt1+=0.051f;  // Увеличение первого счетчика
cnt2+=0.005f;  // Увеличение второго счетчика
return TRUE;   // Все отлично
}
ну и что потом?
MelKiY
-121 / 2 / 1
Регистрация: 20.09.2009
Сообщений: 101
31.10.2010, 00:28  [ТС]     OpemGL Text draw #4
кароче вот я дальше незнаю что потом делать! "????""?"?"?"?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <stdio.h>    // Заголовочный файл для стандартной библиотеки ввода/вывода
#include <gl\gl.h>    // Заголовочный файл для библиотеки OpenGL32
#include <gl\glu.h>   // Заголовочный файл для библиотеки GLu32
#include <gl\glaux.h> // Заголовочный файл для библиотеки GLaux
#include <math.h>     // Заголовочный файл для математической библиотеки ( НОВОЕ )
#include <stdarg.h>   // Заголовочный файл для функций для работы с переменным
//  количеством аргументов ( НОВОЕ )
 
HDC        hDC=NULL;  // Приватный контекст устройства GDI
HGLRC      hRC=NULL;  // Постоянный контекст рендеринга
HWND       hWnd=NULL; // Сохраняет дескриптор окна
HINSTANCE  hInstance; // Сохраняет экземпляр приложения
GLuint  base;      // База списка отображения для фонта
GLfloat  cnt1;     // Первый счетчик для передвижения и закрашивания текста
GLfloat  cnt2;     // Второй счетчик для передвижения и закрашивания текста
 
bool  keys[256];      // Массив для работы с клавиатурой
bool  active=TRUE;    // Флаг активации окна, по умолчанию = TRUE
bool  fullscreen=TRUE;// Флаг полноэкранного режима
LRESULT  CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);  // Объявление WndProc
 
GLvoid BuildFont(GLvoid)  // Построение нашего растрового шрифта
{
HFONT  font;            // Идентификатор фонта
base = glGenLists(96);  // Выделим место для 96 символов ( НОВОЕ )
font = CreateFont(  -24,        // Высота фонта ( НОВОЕ )
0,        // Ширина фонта
0,        // Угол отношения
0,        // Угол наклона
FW_BOLD,      // Ширина шрифта
FALSE,        // Курсив
FALSE,        // Подчеркивание
FALSE,        // Перечеркивание
ANSI_CHARSET,      // Идентификатор набора символов
OUT_TT_PRECIS,      // Точность вывода
CLIP_DEFAULT_PRECIS,    // Точность отсечения
ANTIALIASED_QUALITY,    // Качество вывода
FF_DONTCARE|DEFAULT_PITCH,  // Семейство и шаг
"Courier New");      // Имя шрифта
SelectObject(hDC, font);        // Выбрать шрифт, созданный нами ( НОВОЕ )
wglUseFontBitmaps(hDC, 32, 96, base); // Построить 96 символов начиная с пробела ( НОВОЕ )
}
 
GLvoid KillFont(GLvoid)            // Удаление шрифта
{
glDeleteLists(base, 96);        // Удаление всех 96 списков отображения ( НОВОЕ )
}
 
GLvoid glPrint(const char *fmt, ...)        // Заказная функция «Печати» GL
{
char    text[256];      // Место для нашей строки
va_list    ap;          // Указатель на список аргументов
if (fmt == NULL)     // Если нет текста
return;            // Ничего не делать
va_start(ap, fmt);           // Разбор строки переменных
vsprintf(text, fmt, ap); // И конвертирование символов в реальные коды
va_end(ap);                  // Результат помещается в строку
glPushAttrib(GL_LIST_BIT);      // Протолкнуть биты списка отображения ( НОВОЕ )
glListBase(base - 32);          // Задать базу символа в 32 ( НОВОЕ )
glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);// Текст списками отображения(НОВОЕ)
glPopAttrib(); // Возврат битов списка отображения ( НОВОЕ )
}
 
int InitGL(GLvoid)            // Все начальные настройки OpenGL здесь
{
glShadeModel(GL_SMOOTH);    // Разрешить плавное затенение
glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Черный фон
glClearDepth(1.0f);         // Установка буфера глубины
glEnable(GL_DEPTH_TEST);    // Разрешение теста глубины
glDepthFunc(GL_LEQUAL);     // Тип теста глубины
// Действительно хорошие вычисления перспективы
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
BuildFont();            // Построить шрифт
return TRUE;            // Инициализация окончена
}
 
int DrawGLScene(GLvoid) // Здесь мы будем рисовать все
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Очистка экран и буфера глубины
glLoadIdentity(); // Сброс просмотра
glTranslatef(0.0f,0.0f,-1.0f); // Передвижение на одну единицу вглубь
// Цветовая пульсация, основанная на положении текста
glColor3f(1.0f*float(cos(cnt1)),1.0f*float(sin(cnt2)),1.0f-0.5f*float(cos(cnt1+cnt2)));
// Позиционирование текста на экране
glRasterPos2f(-0.45f+0.05f*float(cos(cnt1)), 0.35f*float(sin(cnt2)));
glPrint("Active OpenGL Text With NeHe - %7.2f", cnt1);  // Печать текста GL на экран
cnt1+=0.051f;  // Увеличение первого счетчика
cnt2+=0.005f;  // Увеличение второго счетчика
return TRUE;   // Все отлично
}
plzzz объясните!
Yandex
Объявления
31.10.2010, 00:28     OpemGL Text draw
Ответ Создать тему
Опции темы

Текущее время: 10:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru