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

Материалы объектов (4 стр)

Страницы: 13 4 5 68 Следующая »
#45
21:41, 5 сен 2012

заметил что текстура не вызгружается,  вот алгоритм:
получаю дескриптор

TextureHandle = Effect->GetAnnotationByName(0,"Textur");

загружаю текстуру из файла

D3DXCreateTextureFromFile(device,"tex1.jpg",&texture1);

устанавливаю текстуру, но почему-то именно здесь ругается

Effect->SetTexture(TextureHandle, texture1);

подскажите пожалуйста что я не так делаю ?

#46
22:59, 7 сен 2012

Ребята, кто-нибудь помогите пожалуйста, а то уже неделю не могу с мётвой точки сдвинуться, подскажите хотя бы книгу где побробно описана работа с шейдерами или статью хотя бы??

#47
23:04, 7 сен 2012

NEvOl
Чем не устраивает с прошлой страницы?

#48
23:47, 7 сен 2012

при запуске объект просто не рисуется,
Вот отрисовка

    Effect->SetTechnique(LightingTeh);
    UINT numPass(0);
    Effect->Begin(&numPass, 0);
    for(int i = 0;i < numPass; i++)
    {
      Effect->BeginPass(i);
        device->SetFVF(D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1); 
        device->SetStreamSource(0, vBox, 0, sizeof(Vertex));

        D3DXMatrixTranslation(&transWall, 0.0f, 0.0f, 0.0f);    
        Effect->SetVector(DiffuseColor, &D3DXVECTOR4(1,1,1,0.5));
        Effect->SetVector(DiffuseIntensity, &D3DXVECTOR4(1,1,1,0.5));
        Effect->SetMatrix(WorldMatrixHandle, &transWall);

        D3DXMatrixMultiply(&WVJMatrix, &transWall, &matCam);
        D3DXMatrixMultiply(&WVJMatrix, &WVJMatrix, &matProj);
        Effect->SetMatrix(WorldViewProjMatrixHandle, &WVJMatrix);
        Effect->SetTexture(TextureHandle, texture1);
        if(FAILED(device->DrawPrimitive(D3DPT_TRIANGLELIST,0,10)))
              return false;  
      Effect->EndPass();
    }
    Effect->End();

вот создаю эффект и получаю дискрипторы

D3DXCreateEffectFromFile(device,
                  "effect.txt",
                  NULL,
                  NULL,
                  D3DXSHADER_DEBUG,
                  NULL,
                  &Effect,
                  &errorBuffer);

    if(errorBuffer)
    {
         MessageBox(0,(char*)errorBuffer->GetBufferPointer(),0,0);
         MessageBox(0,"D3DXCREATEEffectFromFile - failed",0,0);
         return 0;
     }

  WorldMatrixHandle = Effect->GetAnnotationByName(0,"WorldMatrix");

  WorldViewProjMatrixHandle = Effect->GetAnnotationByName(0,"WorldViewProjMatrix");


  DiffuseColor = Effect->GetAnnotationByName(0,"diffuseColor");

  DiffuseIntensity = Effect->GetAnnotationByName(0,"diffuseIntensity");

  LightingTeh = Effect->GetTechniqueByName("Lighting");

              D3DXCreateTextureFromFile(device,"tex1.jpg",&texture1);

  TextureHandle = Effect->GetParameterByName(0, "Textur");

сам эффект вот

matrix WorldMatrix;
matrix WorldViewProjMatrix;
vector Light = {1.0f, 1.0f, 1.0f, 0.0f};
vector diffuseColor;
vector diffuseIntensity;
texture Textur;
sampler Tex = sampler_state
{
     Texture   = (Textur);
     MinFilter = LINEAR;
     MagFilter = LINEAR;
     MipFilter = LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};

struct VS_INPUT
{
     vector position : POSITION;
     float3 normal   : NORMAL;
     float2 uv: TEXCOORD0;
};

struct VS_OUTPUT
{
     vector position : POSITION;
     float3 normal   : TEXCOORD0;
     float2 uv: TEXCOORD1;
};

VS_OUTPUT MainVertex(VS_INPUT input)
{
     VS_OUTPUT output;
     output.position = mul(input.position, WorldViewProjMatrix);
     output.normal = normalize(mul(input.normal, (float3x3)WorldMatrix ));
     output.uv = input.uv;
     return output;
}

float4 MainPixel(VS_OUTPUT input) : COLOR
{
     return tex2D( Tex, input.uv ) *  diffuseColor * diffuseIntensity * dot( input.normal, normalize( ( float3 ) Light ) );
}

technique Lighting
{
  pass p0
  {    
      vertexShader = compile vs_2_0 MainVertex();
      pixelshader = compile ps_2_0 MainPixel();
  }
}

Мне бы знать где можно прочитать про то как правильно работать с шейдерами, с примерами, желательно от простого к сложному, а то неоткуда информацию брать, самоме уже надоело терроризировать(

#49
3:46, 8 сен 2012

NEvOl
Запускаешь DirectX Sample Browser
находишь Tutorial 1 запускаешь...
создаешь свой Tutorial 1 ( пустой ) и начинаешь переписывать только не копи-паста, а ручками! и вникать в эти строки зачем они нужны
если все заработало то переходишь на следующий уровень ищешь Tutorial 2
Удачи!

#50
16:01, 8 сен 2012

то что описано в 6-ти tutorial я понимаю, мне с шейдерами надо с нуля..(

#51
16:51, 8 сен 2012

NEvOl
Чем не устраивают книги с прошлой страницы?

#52
12:29, 9 сен 2012

Я занимаюсь по книге луа и там рассказывается про каркас эффектов. Я оттуда беру примеры, но они не работают в моём коде почему-то или  кидаю свои шейдеры в файл эффекта а они не работают, но есл их раскидать отдельно по файлам то тогда работает. Подскажите где можно еще прочитать про каркас эффектов, возможно я что-то упустил но никак не могу понять что?

#53
13:04, 9 сен 2012

NEvOl
А оно тебе надо - каркас эффектов? Уродливая достаточно вещь.

#54
13:43, 9 сен 2012

-Eugene-
ааа я просто думал что лучше эффектани, ну ладно спасибо)

#55
18:53, 10 сен 2012

ребят, подскажите пожалуйста, имеется dds текстура с альфа каналом, и шейдеры освещения, при включении шейдера текстуры выводятся без прозрачности, отключаю шейдер выводятся без освещения, но с прозрачностью(влючается альфасмешивание), это конечно логично, но как мне совместить это дело ? это мне нужно добавить альфа смешивание в шейдер или что ?

#56
19:49, 10 сен 2012

NEvOl
В ДХ10+ это все делалось вручную в шейдере, как в ДХ9 - честно, уже не помню.:-(

#57
20:53, 10 сен 2012

может кто-нибудь помнит как это делать? пожалуйста подскажите...

#58
3:32, 11 сен 2012

NEvOl
код Rendera в студию :)

#59
8:19, 11 сен 2012
      device->SetVertexShader ( DiffuseVertexShader ); 
      device->SetPixelShader ( DiffusePixelShader );
                  device->SetRenderState(D3DRS_ALPHATESTENABLE, true); 
      device->SetRenderState(D3DRS_ALPHAREF, 128 ); 
      device->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL );

                  D3DXMatrixTranslation(&bulletWall, 0.0f, 0.0f, 0.0f);
      device->SetTransform(D3DTS_WORLD, &bulletWall);

      D3DXMatrixMultiply(&WVJMatrix, &transWall ,&matCam);      
      D3DXMatrixMultiply(&WVJMatrix, &WVJMatrix, &matProj);
      DiffuseConstTableVertex->SetMatrix(device, WorldViewProjMatrixHandle, &WVJMatrix);
      DiffuseConstTableVertex->SetMatrix(device, ViewMatrixHandle, &matCam);
      DiffuseConstTableVertex->SetMatrix(device, WorldMatrixHandle, &transWall);
        
      if(FAILED(device->SetTexture(0,Dira)))
    return false;
     for(int j = 0; j < 2993; j += 6)
    {
    if(FAILED(device->DrawPrimitive(D3DPT_TRIANGLELIST,72 + j, 2)))
      return false;
    }
    
   device->SetRenderState(D3DRS_ALPHATESTENABLE, false); 

При шейдерах смешивание не работает(

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

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