Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

alexm

Frischling

  • »alexm« ist der Autor dieses Themas

Beiträge: 71

Wohnort: Wien

  • Private Nachricht senden

11

06.07.2006, 13:20

hmmmm ...

habe mal folgende erweiterung in meiner app gemacht:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//------------------------------------------------------------------------------

// Name: SwitchAntialiasing()

// Desc: Antialiasing / Texturfiltering EIN/AUS - zur Laufzeit umschalten

//------------------------------------------------------------------------------

inline void cDX_Interface::SwitchAntialiasing()
{
    if ( m_AntialiasingState == TRUE )
    {
        // Filtering AUS

        m_AntialiasingState = FALSE;
        m_D3DDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_NONE);
    }
    else
    {
        // Filtering EIN - Bilineare Interpolationsmethode

        m_AntialiasingState = TRUE;
        m_D3DDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
    }

}


über F2 am keyboard wird SwitchAntialiasing() aufgerufen.
einen unterschied kann ich aber dennoch nicht erkennen :(

fehlt da noch was?

ah ja - ich arbeite mit SPRITES - vielleicht hat das damit zu tun?
oder kommt der SamplerState nur bei skalierungen/rotationen zum tragen - beides verwende ich nämlich nicht.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

12

06.07.2006, 13:37

D3DTEXF_POINT

PS: Anti-Aliasing und Textur-Filtering haben überhaupt nichts miteinander zu tun.

alexm

Frischling

  • »alexm« ist der Autor dieses Themas

Beiträge: 71

Wohnort: Wien

  • Private Nachricht senden

13

06.07.2006, 14:58

_point hab ich auch probiert ...

so ich kenn mich jetzt mal nimmer aus :(

ich frag ganz einfach mal blöd:
was muss ich machen, damit mein font und meine sprites zwischen - ich nenns mal "gefiltert" und "ungefiltert" umschalten? :oops:

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

14

06.07.2006, 15:00

Quellcode

1
2
3
4
5
m_D3DDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_NONE); 

=>

m_D3DDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);

alexm

Frischling

  • »alexm« ist der Autor dieses Themas

Beiträge: 71

Wohnort: Wien

  • Private Nachricht senden

15

06.07.2006, 16:08

na bei mir greift das einfach nicht - schauts mal:

[url]
http://id-products.at/alexm/view/screenshot.png
[/url]

Anonymous

unregistriert

16

06.07.2006, 16:39

Definitiv ein Filter.

alexm

Frischling

  • »alexm« ist der Autor dieses Themas

Beiträge: 71

Wohnort: Wien

  • Private Nachricht senden

17

06.07.2006, 16:44

sag ich ja ... der hund lasst sich nicht ausschalten :lol: :lol:

Anonymous

unregistriert

18

06.07.2006, 16:47

Erste Frage: Welche Dimensionen hat die Textur die Du benutzt?
Zweite Frage: Wie groß ist die Zeichenfläche und wie groß die Fläche der Textur die Du zeichnest
Dritte Frage: Welche Texturkoordinaten benutzt du?
Vierte Frage: Wie lädst Du die Textur?

alexm

Frischling

  • »alexm« ist der Autor dieses Themas

Beiträge: 71

Wohnort: Wien

  • Private Nachricht senden

19

06.07.2006, 17:11

@nix da

1) 512x512

2a) 800x600
2b) 64x64

3) RECT struct mit Ganzzahlen

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//------------------------------------------------------------------------------

// Name: GetCurrentPosition()

// Desc: x,y Positionen relativ zur aktuellen Zeit ausrechnen

//------------------------------------------------------------------------------

inline void cBlob::GetCurrentPosition( D3DXVECTOR3 & refPosition, const UINT & refTimeNowMSec )
{
    FLOAT diff_t_ms = static_cast<FLOAT>( (Time_end - Time_start) * 1000 );

    FLOAT diff_x = static_cast<FLOAT>( X_end - X_start );
    FLOAT diff_y = static_cast<FLOAT>( Y_end - Y_start );

    FLOAT xpms = static_cast<FLOAT>( diff_x / diff_t_ms );
    FLOAT ypms = static_cast<FLOAT>( diff_y / diff_t_ms );

    FLOAT t_ver = static_cast<FLOAT>( refTimeNowMSec - ( Time_start * 1000) );

    refPosition.x = X_start + ( t_ver * xpms );
    refPosition.y = Y_start + ( t_ver * ypms );
    refPosition.z = 0.0;
}


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//------------------------------------------------------------------------------

// Name: RenderFrame() 

// Desc: Rendert Texturen und Font auf Sprite-Objekt

//------------------------------------------------------------------------------

inline void cRenderer::RenderFrame()
{

    // :::::::: RENDER - START :::::::: 

    //

    m_D3D_DEVICE->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0);
    m_D3D_DEVICE->BeginScene();

    m_SPRITE->Begin(D3DXSPRITE_ALPHABLEND);

    D3DXMatrixIdentity(&m_MATRIX);  // Identitätsmatrix zuweisen (scale=1,rotation=1,translation=1)

    m_SPRITE->SetTransform(&m_MATRIX);  // matrix dem sprite zuweisen


    // Lokale Zeit holen

    UINT lt_timeNowMsec = TIMEMANAGER->LT_GetCurrentTimeMSec();
    UINT lt_timeNowSec =  lt_timeNowMsec / 1000;

    // BLOBS auf Sprite rendern

    for ( UINT i = 0; i < static_cast<UINT>( m_vBlob.size() ); i++ )
    {

        // Wenn BLOB gerendert werden soll ( ist abhängig von seinen Zeitdefinitionen )

        if ( m_vBlob[i]->IsVisibleToRenderer( lt_timeNowSec ) )
        {
            m_vBlob[i]->GetCurrentPosition( m_Blob_xyzPos, lt_timeNowMsec );    // Aktuelle Position feststellen

            m_vBlob[i]->GetCurrentAnimRect( m_Blob_Crop,  lt_timeNowMsec  );        // Aktuelle Animationsphase feststellen

            m_vBlob[i]->GetCurrentARGBValue( m_Blob_ARGB, lt_timeNowMsec );     // Aktuellen ARGB-Wert feststellen


            // Texturausschnitt auf Sprite rendern

            m_SPRITE->Draw(
                m_vBlob[i]->Texture,                // Textur

                &m_Blob_Crop,                       // Ausschnitt der Textur

                NULL,                               // Center

                &m_Blob_xyzPos,                     // Screen-position

                m_Blob_ARGB// Color-Overlay

                );

        }

    }

    // ::: INFO-TEXT RENDERN :::

    // ( nur wenn gefordert)

    if ( cUserSettings::GetInstance()->showDebugText )
        _renderScreenText();
    

    m_SPRITE->End();

    m_D3D_DEVICE->EndScene();
    m_D3D_DEVICE->Present(NULL,NULL,NULL,NULL);
    //

    // :::::::: RENDER - ENDE :::::::: 


}



4)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
//------------------------------------------------------------------------------

// Name: LoadTexture()

// Desc: LPDIRECT3DTEXTURE9 - Textur laden

//------------------------------------------------------------------------------

inline HRESULT cImage::LoadTexture()
{
    return (
    D3DXCreateTextureFromFileA( cDX_Interface::GetInstance()->GetD3DDevice(),
                                Filename.c_str(),
                                &pTexture
                                )
            );
}

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

20

06.07.2006, 17:36

Was ist dieses m_SPRITE?
Ist das ein D3DX-Sprite? Vielleicht schaltet dieses den Filter automatisch ein.

Werbeanzeige