Gå til innhold

'DeviceCaps' : is not a member of 'Caps'


Anbefalte innlegg

Hvorfor gir denne koden:

 

// Check to see if we can use a pure hardware device

Caps caps = Manager::GetDeviceCaps(adapterOrdinal, DeviceType::Hardware);

 

// Do we support hardware vertex processing?

if (caps.DeviceCaps::SupportsHardwareTransformAndLight)

{

// Replace the software vertex processing

flags = CreateFlags::HardwareVertexProcessing;

}

 

Denne feil meldingen:

 

'DeviceCaps' : is not a member of 'Microsoft::DirectX::Direct3D::Caps'

error C2039: 'get_SupportsHardwareTransformAndLight' : is not a member of 'Microsoft::DirectX::Direct3D::Caps'

error C3610: 'Caps': value type must be 'boxed' before method 'get_SupportsHardwareTransformAndLight' can be called

error C2662: 'Microsoft::DirectX::Direct3D::DeviceCaps::get_SupportsHardwareTransformAndLight' : cannot convert 'this' pointer from 'Microsoft::DirectX::Direct3D::Caps' to 'Microsoft::DirectX::Direct3D::DeviceCaps __gc &'

 

Når jeg skriver "." etter caps, kommer det opp en liste hvor jeg kan velge DeviceCaps og når jeg skriver "::" etter DeviceCaps, kommer en liste hvor jeg kan velge SupportsHardwareTransformAndLight. adapterOrdinal er en int adapterOrdinal; som kun inneholder hvilket Device (skjermkort) vi bruker.

 

Viss det hjelper noen å svare: tilsvarende kode for C# er:

// Do we support hardware vertex processing?

if (caps.DeviceCaps.SupportsHardwareTransformAndLight)

{

// Replace the software vertex processing

flags = CreateFlags.HardwareVertexProcessing;

}

 

Og C# koden funker i C#

Endret av Mental
Lenke til kommentar
Videoannonse
Annonse

Hmm... jeg bruker disse namespace'ne:

using Microsoft.DirectX;

using Microsoft.DirectX.Direct3D;

 

Så ja, det skal være managed kode...

 

EDIT:

Managed C++ public: __property DeviceCaps get_DeviceCaps();

 

hentet ut fra MSDN.

Endret av Mental
Lenke til kommentar
tør jeg spørre hvorfor du egentlig bruker managed c++?

hvorfor bruker du ikke bare c# i stedet da?

eller er det noen veldig store fordeler med managed c++ som du ikke har med c#?

Jeg driver å går over på Linux og driver å knoter litt med C++ for å komme inn i språket før jeg får noen bøker jeg har bestillt fra amazon (som forøvrig ble sendt i dag) :D

 

Linux Application Development

OpenGL Super Bible

OpenGL Game Development

Red Hat Linux Bible - Fedora a

Open Source Development with CVS

 

Grunnen til at jeg heller bruker managed kode er fordi det er det jeg er vant med å bruke i C#. Det burde gjøre overgangen lettere å drive med noe man har drevet med før?

 

A_N_K:

Takk for svaret. Det funker selvfølgelig å kalle caps.get_DeviceCaps()

 

Men igjen, hvorfor funker ikke caps.DeviceCaps ?? Det ser jo ut som denne er deklarert som en Property, hvilket normalt skulle bety at Get og Set funksjonene er slått sammen i en, og at man kan bruke '==' og '=' operatorene for å finne og sette verdien?

Lenke til kommentar

Hehe, ja... jeg kjøpte den egentlig fordi den fikk så god omtale... Handler om å opprette et opensource prosjekt og en CVS-binge for prosjektet... blir nok heller et oppslagsverk eller noe jeg tar fram viss/når jeg trenger den.

 

Gleder meg egentlig mer til de andre bøkene...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...