Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: OpenGL Наложение текстуры на прямоугольник  (Прочитано 5034 раз)
0 Пользователей и 1 Гость смотрят эту тему.
asker
Помогающий

ru
Offline Offline
Пол: Мужской

« : 07-12-2005 19:02 » 

Использую VC++6, glut.
Задача такая: есть прямоугольник на него надо наложить текстуру (допустим: фон и на нем черным написана буква).
Проблема: Прямоугольник красится цветом фона текстуры.
Код:
BOOL CDlg::OnInitDialog()
{
        ...
m_QuadrObj = gluNewQuadric();

glEnable(GL_DEPTH_TEST);
        glEnable(GL_TEXTURE_2D);
        glPixelStorei(GL_UNPACK_ALIGNMENT,1);

        m_pTextureIDs = new int[1];
glGenTextures(NUM_LETTERS,(unsigned int*) m_pTextureIDs);
        if (!LoadBMP(g_strFilesNamesLetters[0], &m_imageLetters[0])) {
MessageBox("Изоб не загужено", "Ошибка", MB_OK | MB_ICONSTOP);
return FALSE;
}
glBindTexture(GL_TEXTURE_2D, m_pTextureIDs[0]);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, m_imageLetters[0].width, m_imageLetters[0].height,
     GL_RGB, GL_UNSIGNED_BYTE, m_imageLetters[0].data);

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, (float) GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (float) GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, (float) GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, (float) GL_REPEAT);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, (float) GL_REPLACE);
        ...
        gluQuadricTexture(m_QuadrObj, GL_TRUE);
        CreateListForCube(m_nNumCube);
}

На строчку
Код:
m_pTextureIDs = new int[1];
не ругайтесь - у меня не один прямоугольник

Код:
void CDlg::CreateListForCube(int numCube)
{
        glNewList(numCube, GL_COMPILE);

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, m_pTextureIDs[0]);
glBegin(GL_QUADS);
glNormal3f(0,0,1);
glVertex3f(0,0,0);
glVertex3f(1,0,0);
glVertex3f(1,1,0);
glVertex3f(0,1,0);
glEnd();
...
glDisable(GL_TEXTURE_2D);
glEndList();
}

Код:
void CDlg::OnPaint()
{
...
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
glClearColor(0, 0, 0, 1);
glLoadIdentity();
glPushMatrix();
        glColor3ub(255, 0, 255);
glTranslatef(-0.5,0.2,-7);
        glRotatef(m_nAngle, 0, 1, 0);
        glScalef(1, 1, 0.08);
glCallList(m_nNumCube);
glPopMatrix();
...
SwapBuffers(m_initGL.m_hDC);
...
}

Может я что-то делаю неправильно? Подскажите пожалуйста.
Записан

С уважением, asker
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines