в общем в opengl пытаюсь вывести текст, в opengl проекте. Но почему то выходит какая то синтаксическая ошибка.
Вот добавленный в проект код, почему жалуется на "превращения" хотя все заголовочные подключены
void RenderText(std::string message, SDL_Color color, int x, int y, int size) {
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
gluOrtho2D(0, gWindowWidth, 0, gWindowHeight); // m_Width and m_Height is the resolution of window
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glDisable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
TTF_Font * font = TTF_OpenFont("pathToFont.ttf", size);
SDL_Surface * sFont = TTF_RenderText_Blended(font, message, color);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, sFont->w, sFont->h, 0, GL_BGRA, GL_UNSIGNED_BYTE, sFont->pixels);
glBegin(GL_QUADS);
{
glTexCoord2f(0,0); glVertex2f(x, y);
glTexCoord2f(1,0); glVertex2f(x + sFont->w, y);
glTexCoord2f(1,1); glVertex2f(x + sFont->w, y + sFont->h);
glTexCoord2f(0,1); glVertex2f(x, y + sFont->h);
}
glEnd();
glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glDeleteTextures(1, &texture);
TTF_CloseFont(font);
SDL_FreeSurface(sFont);
}
вот ошибка
/home/comp/Qt_project/two/main.cpp:82: ошибка: cannot convert ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’ to ‘const char*’ for argument ‘2’ to ‘SDL_Surface* TTF_RenderText_Blended(TTF_Font*, const char*, SDL_Color)’
SDL_Surface * sFont = TTF_RenderText_Blended(font, message, color);
^
Некак не могу понять откуда она <string>
подключён, СТД аж всю дивизию подключил <SDL2/SDL.h> <SDL2/SDL_ttf.h> <SDL2/SDL_video.h> <SDL2/SDL_render.h> <SDL2/SDL2_gfxPrimitives.h>
Библиотеки также подключены.
Я догадываюсь что проблема в том что "компилятор может чего то не иметь " но незнаю как обойти.
TTF_RenderText_Blended
принимает С-строку (const char *
), а вы ему передаете std::string
.
message
-> message.c_str()
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Более опытные разработчики, помогите, уже все испробовалВо время очередной верстки сайта у меня на маленьких экранах перестала работать...
посмотрите пожалуйста на мокапКрасные блоки - простой контент