Войти
ПрограммированиеФорумГрафика

Динамические тени, основаные на CubeMap (комментарии) (4 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#45
12:00, 20 июня 2009

wglChoosePixelFormatARB проинициализирован и проверку проходит, тут видать ошибка во входных параметрах( передаю что-то не то).
После инициалзации основного OpenGL'a , инициализируем PixelBuffer вот PixelBuffer и не инициализируется ,т.к. вылетает с руганью на wglChoosePixelFormatARB.

P.S. что-то я окончательно запутался в этих HDC и HGLRC, т.к. у вас есть H_DC,H_RC, затем h_dc, h_rc, и еще h_RC и FShadowBuffer.RC от pBuffer.Что к чему относится? H_DC и H_RC - это OpenGl, а h_dc, h_rc, h_RC - это откуда?

если не получится у тебя перевести , могу сам перевести весь пример под BCC =) Если вас это не затруднит))), но это было бы здорово).


#46
13:57, 20 июня 2009

JohnSmith,
Да я так тоже думаю , но после проверок , оказалось что такого случая с заклампованием либо нет либо точность которая получается её вполне достаточно.
BenTech
(в дельфи H_DC и h_dc есть одно и тоже т.к. он не чувствителен к регистру)

Есть основной H_DC и H_RC - которые относятся непосредственно к главному окну проекта, с которыми мы и работаем.
Есть DC,RC, ParentDC, ParentRC у класса PixelBuffer
Parent DC/RC (родительские хендлы главного окна)-
DC - хранит хендл вспомогательного окна
RC - дополнительный хендл PixelBuffer'a в котором мы рисуем тени.

>>Если вас это не затруднит))), но это было бы здорово).

а что тут токого трудного :D , нужно только вспомнить где валяется инсталяшка с BCC и так по помелочи.

#47
17:17, 20 июня 2009

Хм... понятно, а то я все никак допереть не мог, зачем их так много =).

#48
15:44, 12 июля 2009

Что-то не работает... Маленько не догнал, как перевести на с++ функцию  UpdateShadowMap, а точнее вот этот кусок

for cs := GL_TEXTURE_CUBE_MAP_POSITIVE_X to GL_TEXTURE_CUBE_MAP_NEGATIVE_Z do
    begin
      glClear(GL_DEPTH_BUFFER_BIT or GL_Color_BUFFER_BIT);
      glLoadIdentity;
      case cs of
        GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB: begin
            glRotatef(180, 0, 0, 1);
            glRotatef(90, 0, 1, 0);
          end;
        GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB: begin
            glRotatef(-90, 1, 0, 0);
          end;
        GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB: begin
            glRotatef(180, 1, 0, 0);
          end;
        GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB: begin
            glRotatef(180, 0, 0, 1);
            glRotatef(-90, 0, 1, 0);
          end;
        GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB: begin
            glRotatef(90, 1, 0, 0);
          end;
        GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB: begin
            glRotatef(180, 0, 0, 1);
          end;
      end;
    // Устанавливаем центер мира
      with Position do glTranslatef(-x, -y, -z);
#49
23:16, 12 июля 2009

Переписал основные классы на с++ PBO взял со Steps3d

Вот результат...
Bag.jpg | Динамические тени, основаные на CubeMap (комментарии)

Вот классы PBO и TLighting...
Файлы.rar

Остальной код

TShaders *Shadow;
TShaders *Bump;
TObjects *Objects;
TImportTexture *TexImport;
TLighting *LightSource;

textureUnit t_Color;
textureUnit t_Normal;
objectUnit o_Model;

void Init()
{
TexImport = new TImportTexture();
Objects = new TObjects();

Shadow = new TShaders();
Bump = new TShaders();

LightSource = new TLighting[3];

Buffer =new PBuffer(256,256,1,false);

Shadow->CreateShader("Shad\\shadow.vp","Shad\\shadow.fp");
Bump->CreateShader("Shad\\bump.vp","Shad\\bump.fp");

Bump->ActiveShaders();
Bump->SetUniform1i("color_map",0);
Bump->SetUniform1i("normal_map",0);
Bump->SetUniform1i("shadow_map",0);
Bump->SetUniform1f("_exponent",48);
Bump->DestroyShaders();

LightSource[0].Create(CVector3(0,0,0),CVector3(1,1,1),2000,256);
LightSource[1].Create(CVector3(0,0,0),CVector3(0,1,1),2000,256);
LightSource[2].Create(CVector3(0,0,0),CVector3(1,0,0),2000,256);

TexImport->ImportTexture2D(&t_Color,"Tex\\rockwall.tga",IL_TGA);
TexImport->ImportTexture2D(&t_Normal,"Tex\\rockwall_normal.tga",IL_TGA);

Objects->ImportObject(&o_Model,"Model.ism",false);
}

void DrawScene()
{
glColor3f(0,0,0);
Objects->RenderObject(o_Model,t_Color.texID,t_Normal.texID,false);
glColor3f(1,1,1);

glDepthFunc(GL_EQUAL);
glDepthMask(false);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE);


Bump->ActiveShaders();
for(int i=0;i<3;i++)
{
Bump->SetUniform3f("light",LightSource[i].Position.x,LightSource[i].Position.y,LightSource[i].Position.z);
Bump->SetUniform1f("radius",LightSource[i].Radius);
        LightSource[i].Bind();

        Objects->RenderObject(o_Model,t_Color.texID,t_Normal.texID,true);

        LightSource[i].UnBind();


}
 Bump->DestroyShaders();



    glDepthFunc(GL_LEQUAL);
    glDepthMask(true);
    glDisable(GL_BLEND);
}

void ModelRender()
{
Objects->RenderObject(o_Model,t_Color.texID,t_Normal.texID,false);
}

void Loop()
{
DrawScene();

for(int i=0;i<3;i++)
{
LightSource[i].Update(ModelRender,Buffer,Shadow);
}
}
#50
13:52, 14 июля 2009

это нормально, что у меня тени как-то рывками перемещаются? а на ступеньках при некотором ракурсе вообще жесть какая-то творится. winXP sp2 GF7600GT

#51
8:58, 16 июля 2009

BenTech
сори что не отвечал просто работы у мну сейчас по горло =)
ну как получилось чего ? или всёже дему писать ?? под си ?

Dimich
> то нормально, что у меня тени как-то рывками перемещаются? а на ступеньках при
> некотором ракурсе вообще жесть какая-то творится. winXP sp2 GF7600GT
Видать ZBias  который я установил по умолчанию слишком мал / или слишком большой =)

#52
12:08, 16 июля 2009

SVSD_VAL
если, Вам не сложно, то имхо стоит, т.к. у меня получилось нечто темое и страшное(ну точно не тени))).

#53
12:24, 16 июля 2009

Ок , сделаю =)

Прошло более 10 месяцев
#54
14:26, 6 июня 2010

Мой антивирус НОД пишет,  что файл - троян.

Прошло более 1 года
#55
1:32, 23 дек. 2011

Народ, простите за глупый вопрос. Объясните мне, пожалуйста, почему камеру нужно выставлять в инвертированную позицию?
Я про эту строчку:
with Position do glTranslatef(-x, -y, -z);

#56
9:21, 23 дек. 2011

Потому что мы двигаем не камеру относительно мира, а мир относительно начала координат.

#57
11:11, 23 дек. 2011

Dimich
То есть, по сути, можно и камеру поместить в положение источника света? Будет тоже самое?

#58
12:08, 23 дек. 2011

Угу

#59
13:02, 23 дек. 2011

SVSD_VAL
А для OpenGL вообще все одно и тоже, так? Ведь на выходе получаем одну и ту же видовую матрицу.

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

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