Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2010, 15:41   #1
peredozer
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 16
По умолчанию Как растянуть текстуру на всю форму(прямоугольник)?(OpenGl)

Загружаю текстуру на форму(то есть на GL_QUADS),а получается что она отображается на четырех прямоугольниках(повторяется).Как сделать что бы не повторялась?(размер текстуры 660*602.bmp).Загрузка текстуры с помощью модуля Textures.

FormPaint:
Код:
var ps:TpaintStruct;
      begin
        BeginPaint(Handle,ps); 
          glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT) ;
          glEnable(GL_DEPTH_TEST);
          glPushMatrix;
            GLENABLE(GL_TEXTURE_2D);
            LoadTexture('GetMap.bmp',Texture,false);
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
            glTexParameterI(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
            glBegin(GL_QUADS);
              glTexCoord2f(-1,-1);
              glVertex2f(-3,-3);

              glTexCoord2f(-1,1);
              glVertex2f(-3,3);

              glTexCoord2f(1,1);
              glVertex2f(3,3);

              glTexCoord2f(1,-1);
              glVertex2f(3,-3);
            glEnd;

            glDisable(GL_TEXTURE_2D);
          glPopMatrix;
          glDisable(GL_DEPTH_TEST);
          glFlush();
          SwapBuffers(DC);
        EndPaint(Handle,ps);
end;
FormCreate
Код:
 InitOpenGL('C:\Windows\System32\OpenGL32.dll','C:\Windows\System32\GLU32.dll');
    DC:=GetDC(Handle); 
    PixelFormat;
    hrc:=wglCreateContext(DC);
    wglMakeCurrent(DC,hrc);
PixelFormat:
Код:
var nPixelFormat:Integer;
    pfd:TpixelFormatDescriptor;
    begin
      FillChar(pfd,Sizeof(pfd),0);
        with pfd do
          begin
            nSize:=Sizeof(pfd);
            nVersion:=1;
         dwFlags:=PFD_DOUBLEBUFFER+PFD_SUPPORT_OPENGL+PFD_DRAW_TO_WINDOW; 
            iPixelType:=PFD_TYPE_RGBA;
            cColorBits:=24;
            cAlphaBits:=64;
            cAccumBits:=64;
            cDepthBits:=32;
            cStencilBits:=64;
            iLayerType:=PFD_MAIN_PLANE;
          end;
          nPixelFormat:=ChoosePixelFormat(DC,@pfd);
          if  nPixelFormat<>0 then
            SetPixelFormat(DC,nPixelFormat,@pfd); 
    end;
FormResize
Код:
begin
glMatrixMode(GL_PROJECTION_MATRIX);
glLoadIdentity;
if width <= height then
      glOrtho(-2,2,-2*height/width,2*height/width,-10.0,10.0) 

    else

      glOrtho(-2*width/height,2*width/height,-2,2,-10.0,10.0);

      glViewport(0,0,width,height);
end;
Вложения
Тип файла: zip OpenTex.zip (1.00 Мб, 26 просмотров)
peredozer вне форума Ответить с цитированием
Старый 05.05.2010, 19:22   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

glTexCoord2f - параметры должны быть в пределах [0..1]
Код:
            glBegin(GL_QUADS);
              glTexCoord2f(0,0);
              glVertex2f(-3,-3);

              glTexCoord2f(0,1);
              glVertex2f(-3,3);

              glTexCoord2f(1,1);
              glVertex2f(3,3);

              glTexCoord2f(1,0);
              glVertex2f(3,-3);
            glEnd;
eoln вне форума Ответить с цитированием
Старый 05.05.2010, 19:29   #3
peredozer
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 16
По умолчанию

Спасибо большое
peredozer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как растянуть див на всю высоту клиентской части окна браузера Anopsa - Anna HTML и CSS 3 21.09.2009 10:07
Как растянуть кнопку на всю ширину ячейки? Stilet HTML и CSS 2 14.08.2009 15:40
Как растянуть видео на всю панель?? regman Мультимедиа в Delphi 1 17.07.2009 11:11
Как перетаскивать всю форму с помощью объекта на форме. Bill Gates Общие вопросы Delphi 1 02.01.2008 20:42
OpenGl+Delphi,при загрузке текстуру сильно корежит Skif Помощь студентам 1 27.11.2007 08:40