Шрифт не отображается на экране во время написания кода OpenGL.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Шрифт не отображается на экране во время написания кода OpenGL.

Сообщение Anonymous »

Я написал следующий код opengl, отвечающий приведенным ниже требованиям:
  • От 0 до 9 в упрощенном файле шрифтов TrueType (times_font_partial.txt) ),
    Прочитайте общую информацию о A-Z и a-z.
  • Добавьте графический интерфейс

    Когда я получаю текстовый ввод от ImGui, шрифт соответствующих символов отображается на экране
  • Измените цвет шрифта, добавив цветовую палитру
[*] максимальное количество символов, рисуемых одновременно, — 5 символов.

[*]Если символ, введенный в поле 2, представляет собой число от 0 до 9, постройте контур символа в левом окне

[*]Если символы, введенные в поле 2, представляют собой алфавиты между a и z и A и Z, нарисуйте соответствующий алфавит


#include "imgui/imgui.h"
#include "imgui/imgui_impl_glfw.h"
#include "imgui/imgui_impl_opengl3.h"
#include "InitShader.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;

struct Outline {
std::vector points;
};

class FontLoader {
public:
std::map outlines;
float fontScale = 1.0f;

void LoadFont(const std::string& filename) {
std::ifstream file(filename);
if (!file.is_open()) {
std::cerr index;

std::getline(file, line);
std::stringstream charIndexStream(line.substr(9));
charIndexStream >> charIndex;
char ch = static_cast(charIndex);

std::getline(file, line);
std::stringstream bboxStream(line.substr(5));
bboxStream >> bbox[0] >> bbox[1] >> bbox[2] >> bbox[3];

std::getline(file, line);
std::stringstream numContoursStream(line.substr(12));
numContoursStream >> numContours;

Outline outline;
for (int i = 0; i < numContours; i++) {
std::getline(file, line);
if (line.find("Contour") == 0) {
std::stringstream ss(line.substr(8));
int contourIndex, numPoints;
ss >> contourIndex >> numPoints;

for (int j = 0; j < numPoints; j++) {
std::getline(file, line);
char type;
float x, y;
std::stringstream pointStream(line);
pointStream >> type;

if (type == 'L') {
pointStream >> x >> y;
outline.points.push_back(glm::vec2(x, y));
}
}
}
}

outlines[ch] = outline;
}
}
file.close();
}

void SetFontScale(float scale) {
fontScale = scale;
}

Outline GetOutline(char ch) {
return outlines.count(ch) ? outlines[ch] : Outline();
}
};
// Functions for debugging user-populated values
void DebugImGuiInput(const char* inputText, glm::vec3 fontColor, float fontSize) {
std::cout

Подробнее здесь: https://stackoverflow.com/questions/791 ... pengl-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»