ПрограммированиеФорум2D графика и изометрия

2D OpenGL Help Me (3 стр)

Страницы: 1 2 3 4 5 Следующая »
#30
22:44, 6 ноя 2009

NVIDIA GeForce FX 5500 :)
А может можно что то другое придумать? графики через чур много :) да и в коде неразобраться будет из за этого :)

#31
23:30, 6 ноя 2009

DarkWraith
>
> А может можно что то другое придумать? графики через чур много :) да и в коде
> неразобраться будет из за этого :)

Размер текстур обязан быть степенью двойки.
Это не обсуждается.
Если не устраивает - забудь об аппаратном ускорении, только софтверный рендеринг.

#32
23:51, 6 ноя 2009

DarkWraith
> А может можно что то другое придумать? графики через чур много :)
Можно и другое. Можно юзать ARB_texture_rectangle.
Только сразу забывай про мипмаппинг, GL_REPEAT враппинг, и про нормализованные текстурные координаты.

#33
9:09, 7 ноя 2009

Я вообщем пойду отредактирую TGA Loader так, чтоб он при загрузке их округлял до степени двойки прозрачными пикселами :)

#34
10:40, 7 ноя 2009

Помогите пожалуйсто мне снова :) функцию изменения размеров написал, теперь картинка автоматом при загрузке делается размерами кратным двойке :).
Но возникла проблемка. Как мне наложить эту текстуру? у меня есть текстура 283х68, после загрузки она становится 512х128, и теперь когда я её накладоваю в квад размерами 283х68 она ужимается под его размеры, что сделать чтоб картинка не ужималась, а просто та часть что не влезает игнорировалась?
Код своей функции меняющей размеры могу дать, если вдруг кому нужно :)

#35
11:37, 7 ноя 2009

DarkWraith
Для начала реши, будет это строго 2D без значительного масштабирования спрайтов, или таки потом захочется 3D.
Глядя на твои последние вопросы и, главное, на код, приходишь к выводу, что ARB_texture_rectangle подойдет идеально. Ты всё-равно хранишь размеры картинки в классе block_list, так что ненормализованные текстурные координаты тебе не помеха.

#36
11:40, 7 ноя 2009

Ну я делаю игру танчики как на денди :), Ничего особенного не будет, а опыт с 3D у меня уже есть :) так что на 3D не уйду с этой игрой. Тут только 2D, на кадр максимум 2000 спрайтов :D Что мне кажется многовато. А ответ на вопрос как сделать чтоб текстура не расстягивалась а обрезалась можно? :)

#37
12:00, 7 ноя 2009

DarkWraith
1. Убери растягивание из загрузчика картинок.
2. Бинди текстуры не к GL_TEXTURE_2D а к GL_TEXTURE_RECTANGLE_ARB
3. Соответственно glEnable/glDisable не GL_TEXTURE_2D, a GL_TEXTURE_RECTANGLE_ARB
4. Текстурные координаты не glTexCoord2f(0 .. 1, 0 .. 1), а glTexCoord2i (0 .. img_witdh, 0 .. img_height)

И вся разница.

#38
12:22, 7 ноя 2009

[BCC32 Error] tga.h(311): E2451 Undefined symbol 'GL_TEXTURE_RECTANGLE_ARB'
  Full parser context
    main.cpp(7): #include include\tga.h
    tga.h(307): parsing: bool LoadTexture(char *,unsigned int)

#39
12:35, 7 ноя 2009

В загрузчике данных вызываешь функции GL?
Где соответствующие инклуды? gl.h, glext.h?

#40
12:39, 7 ноя 2009

всмысле? ты же вроде видал код :)
ничего о glext.h не слышал :)
[BCC32 Error] main.cpp(6): E2209 Unable to open include file 'gl\glext.h'
У меня всего 3 файла для opengl: gl.h, glaux.h, glu.h;
Два из них подключенно, а именно: gl.h, glu.h;

В загрузчике текстуры вызываю :-)
bool LoadTexture( char *TexName, GLuint TexHandle ){
  TGAImg Img;

  if( Img.Load( TexName ) != IMG_OK ) return false;
  glBindTexture( GL_TEXTURE_2D, TexHandle );
  Img.FixSize();
  if( Img.GetBPP() == 24) glTexImage2D( GL_TEXTURE_2D, 0, 3, Img.GetWidth(), Img.GetHeight(), 0, GL_RGB, GL_UNSIGNED_BYTE, Img.GetImg() );
  else if( Img.GetBPP() == 32 ) glTexImage2D( GL_TEXTURE_2D, 0, 4, Img.GetWidth(), Img.GetHeight(), 0 , GL_RGBA, GL_UNSIGNED_BYTE, Img.GetImg() );
  else return false;

  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );

  return true;
}

#41
12:48, 7 ноя 2009

Да кстати, вы неподскажите, я вот думаю и никак не пойму, зачем делать копию unsigned int и называть её GLuint, это ведь глупо? зачем это делается? ради прикола? эх, я их не понимаю :)

#42
12:50, 7 ноя 2009

DarkWraith
> всмысле? ты же вроде видал код :)
Потому и навожу на мысль. У тебя в tga.h лежит код, использующий функционал GL. При этом в самом tga.h нет #include <GL/gl.h>. Из-за этого компиляция сломается, если где-то в другом cpp файле tga.h будет включен раньше, чем gl.h

>ничего о glext.h не слышал :)
http://www.opengl.org/registry/#headers

http://www.opengl.org/registry/api/glext.h
http://www.opengl.org/registry/api/wglext.h

#43
13:29, 7 ноя 2009

Лучше скажи что делать, инклуда OpenGl не нужна, т.к. она в любом случае раньше за инклюдилась :) main.cpp там сначало gl а потом tga :) что делать?

#include <windows.h>
#include <time.h>
#include <stdio.h>
#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
#pragma hdrstop
#include "include\tga.h"
#include "header.hpp"
#include "game.cpp"
#pragma comment (lib , "opengl32.lib")
#pragma comment (lib , "glu32.lib")

#44
13:36, 7 ноя 2009

DarkWraith
> #include <gl\gl.h>
> #include <gl\glu.h>
> #include <gl\glaux.h>
+
#include <gl\glext.h>

Страницы: 1 2 3 4 5 Следующая »
ПрограммированиеФорум2D графика и изометрия

Тема в архиве.