wxBitmap в текстуру.

219
11 декабря 2017, 16:00

Создаю bitmap, пишу на нем строку, конвертирую в wxImage, и пытаюсь использовать как текстуру.

wxBitmap bmp(w, h);
wxMemoryDC gdc(bmp);
gdc.SetBrush(*wxWHITE_BRUSH);
gdc.Clear();
gdc.SetTextForeground(color);
gdc.SetFont(font);
gdc.DrawText(srt, 0, 0);
image = bmp.ConvertToImage();

//получаю текстуру

GLuint* ID = new GLuint[1];
    glGenTextures(1, &ID[0]);
    glBindTexture(GL_TEXTURE_2D, *ID);
    int w1 = image->GetWidth(), h1 = image->GetHeight();
    int glw1 = NextPow2(w1), glh1 = NextPow2(h1);
    unsigned char *d = image->GetData();
    unsigned char *a = image->GetAlpha();
    unsigned char *e = new unsigned char[4 * w1 * h1];
    if (d && e && a){
        for (int p = 0; p < w1*h1; p++) {
            e[4 * p + 0] = d[3 * p + 0];
            e[4 * p + 1] = d[3 * p + 1];
            e[4 * p + 2] = d[3 * p + 2];
            e[4 * p + 3] = a[p];
        }
    }
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
        glw1, glh1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0,
        w1, h1, GL_RGBA, GL_UNSIGNED_BYTE, e);
    delete[] e;
    // set texture parameters as you wish
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    // GL_CLAMP_TO_EDGE
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
    glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
    return ID;

Но вместо картинки, какая-то рябь.

Для изображений, загруженных из файла - все работает отлично.

wxBitmap bit;
    bit.LoadFile(bitmapsPath + imageName, wxBITMAP_TYPE_PNG);
    image = bit.ConvertToImage();
READ ALSO
Условие Edit Cintrol. Цвет текста. С++. MFC

Условие Edit Cintrol. Цвет текста. С++. MFC

Как сделать проверку, чтобы при вводе в Edit Control определенного значения, оно становилось красным и нельзя было нажать на кнопкуТо есть значение...

257
Задача про рыцарей и оруженосцев

Задача про рыцарей и оруженосцев

ЗдравствуйтеЗначит, задача состоит в том, чтобы переправить 3 рыцарей и 3 их оруженосцев на другой берег на лодке, в которую вмещается 2 человека

258
d3dx9: переопределение типа &ldquo;class&rdquo; C++

d3dx9: переопределение типа “class” C++

Что делать? Уже полтора часа голову ломаю :(

204
Определить номер заданного пользователем числа в файле

Определить номер заданного пользователем числа в файле

Задано текстовый файлОпределить номер заданного пользователем числа, если такого нет в строке, то сообщить об этом

238