2
\$\begingroup\$

I am not familiar with Direct3D and I want to know if it has hardware and vendor dependant functions like the extensions in OpenGL?

A program written by a friend fails on certain computers while it runs perfectly on others. Also a simple program to get a list of supported extensions would be helpful (like glGetString(GL_EXTENSIONS) in OpenGL).

\$\endgroup\$
  • \$\begingroup\$ "A program written by a friend fails on certain computers while it runs perfectly on others." Sounds like you're failing into the XY problem. Ask a new detailed question about the problem itself (how does it fail, what errors do you get, what is the D3D debug layer output, what hardware/OSes does it fail on, which does it work on, etc.) and you'll likely get more useful answers than asking for details about your guess at the cause of the problem. :) \$\endgroup\$ – Sean Middleditch Mar 5 '14 at 17:32
2
\$\begingroup\$

No, Direct3D doesn't have a functionality extension concept the same way OpenGL does.

  • Direct3D 9 exposes device capabilities, which provide information about scalar or Boolean quantities related to feature support (such as "how many lights are supported" or "how many instructions can a vertex shader program contain").
  • Direct3D 10 (and 10.1) provided firm guarantees about capabilities.
  • Modern versions of Direct3D (11+) expose the concept of feature levels, which provide broad guarantees of certain functionality.

In a few rare cases, driver-specific workarounds or behavior can be triggered in D3D by passing otherwise invalid or undocumented parameters to certain Direct3D entry points. These are uncommon, usually not a good idea to rely on, and aren't made available for querying except by checking the hardware and driver versions. Similarly, a few pieces of hardware and/or a handful of drivers can play a bit fast and loose with their conformance to the D3D specification (whichever one they claim to support), but that's not really what you're looking for either.

While there are functions to query the above mechanisms, none of the mechanisms provide any way to introduce new entry points into the API or introduce entirely new functionality without versioning the API itself (which is what OpenGL's extension mechanism allows for).

In summary, there's no equivalent to glGetString(GL_EXTENSIONS) in Direct3D because there's no equivalent capability in the API. Your friend's program likely just has a legitimate bug of the variety that manifests as you describe (any number of things could be causing it).

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.