Russian Qt Forum
Май 10, 2024, 14:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] Текстуру на треугольник  (Прочитано 5288 раз)
8Observer8
Гость
« : Декабрь 12, 2014, 19:55 »

Привет!

Нарисовал треугольник. Пытаюсь наложить текстуру. Вывод:
Цитировать
QOpenGLShader::compile(Fragment): 0(12) : error C1105: cannot call a non-function

*** Problematic Fragment shader source code ***
#version 330 core
#define lowp
#define mediump
#define highp

in vec2 texture;
out vec4 color;
uniform sampler2D textureUniform;

void main()
{
    color = texture( textureUniform, texture );
}

***

Откройте, пожалуйста, проект в Creator'е. Может вы увидите, что я сделал не так: https://github.com/8Observer8/TexturedTriangle
« Последнее редактирование: Декабрь 15, 2014, 18:23 от 8Observer8 » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #1 : Декабрь 12, 2014, 21:21 »

название функции и переменной совпадают судя по коду
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
8Observer8
Гость
« Ответ #2 : Декабрь 12, 2014, 22:11 »

Спасибо! Исправил и обновил код на github'е. Теперь выводится треугольник, но без текстуры
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Декабрь 15, 2014, 10:14 »

Смотрите пример.
У вас судя по всему не заданы координаты текстуры.
Записан
8Observer8
Гость
« Ответ #4 : Декабрь 15, 2014, 18:25 »

У меня получилось! Мой пример здесь
Записан
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #5 : Май 19, 2015, 09:29 »

У меня получилось! Мой пример здесь
Если на текстуре нарисовать цифру, то видно что она перевернута. Почему?
У меня в программе такая же ерунда, начало текстурных координат идет с верхнего левого угла, а не с нижнего левого:

Код:
 //Конструктор
    QImage *imgButton = new QImage(500, 100, QImage::Format_RGBA8888);
    imgButton->fill(Qt::transparent);
    QPainter p(imgButton);
    p.setPen(Qt::red);
    p.setFont(QFont("Arial", 20));
    p.drawText(10,20,"Привет, мир !");

    glGenTextures(1, &imgTexture);
    glBindTexture(GL_TEXTURE_2D, imgTexture);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, imgButton->width(), imgButton->height(), 0,
                 GL_RGBA, GL_UNSIGNED_BYTE, imgButton->bits());

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    float color[] = { 1.0f, 0.0f, 0.0f, 0.0f };
    glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, color);


void GlGui::draw()
{
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    glOrtho(0.0, width, 0.0, height, -1.0, 1.0 );

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    gl_funcs->glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, imgTexture);

    glBegin(GL_QUADS);
    glTexCoord2f(0.f, 1.f);    glVertex2f( 10, 50);
    glTexCoord2f(1.f, 1.f);    glVertex2f(510, 50);
    glTexCoord2f(1.f, 0.f);    glVertex2f(510,150);
    glTexCoord2f(0.f, 0.f);    glVertex2f( 10,150);
    glEnd();
}
Рисует "нормально", так как glTexCoord2f координата y перевернута.
« Последнее редактирование: Май 19, 2015, 11:07 от deMax » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.075 секунд. Запросов: 23.