标签: directx

opengl和directX之间的比较

可能重复:
OpenGL还是DirectX?

不想引发战争,但真的想知道那两个主流图形库的利弊吗?

opengl directx

0
推荐指数
2
解决办法
4473
查看次数

如何在三个不同的.cpp文件中使用函数

我有三个.cpp文件,名为MeshLoader.cpp,DynamicXMesh.cppStaticXMesh.cpp

我在MeshLoader.cpp文件中有一个名为FindTexturePath的函数,我想在DynamicXMesh.cppStaticXMesh.cpp文件中调用它.

我已经包括MeshLoader.cpp(#包括"MeshLoader.cpp")在启动文件XMesh文件,当然得到,说功能已经定义的错误...

我也尝试使用pragmaifndef ...:

//This is "MeshLoader.cpp"
pragma once

#ifndef MLOAD
#define MLOAD
  char* FindTexturePath( char* TexturePath ,LPSTR FileNameToCombine){
      ...
      ...
      ...
  }
#endif
Run Code Online (Sandbox Code Playgroud)

/////

//This is StaticXMesh.cpp
#include "MeshLoader.cpp"
...
...
...
this->StatXMeshTexturePath = FindTexturePath(StatXMeshTexturePath,d3dxMaterials[i].pTextureFilename);
...
...
Run Code Online (Sandbox Code Playgroud)

/////同样调用DynamicXMesh.cpp

我希望我能够清楚地解释自己......谢谢你给我的时间......

c c++ directx include

0
推荐指数
1
解决办法
282
查看次数

结合C++和C.

我试图做一个DirectX教程,但我想用C编写应用程序,而不是用C++编写.所以我用C编写代码,但是当我尝试编译它时,我在"setupD3D"函数中遇到了很多错误.所以我只是将文件重命名为.cpp.但新代码也没有编译.我认为结合C和C++是个问题,或者有许多交叉引用.谁能告诉我这段代码中的问题是什么?

direct3d.h:

#include "main.h"

#ifndef DIRECT3D

#define DIRECT3D

int m_videoCardMemory;
char m_videoCardDescription[128];
ID3D11DeviceContext* m_deviceContext = 0;
D3DXMATRIX m_projectionMatrix;
D3DXMATRIX m_worldMatrix;
D3DXMATRIX m_orthoMatrix;

int setupD3D(BYTE vsync, HWND hwnd, float screenDepth, float screenNear);
void terminateD3D();
void beginScene(float red, float green, float blue, float alpha);
void endScene();

#endif
Run Code Online (Sandbox Code Playgroud)

direct3d.cpp

#include "direct3d.h"
// code
Run Code Online (Sandbox Code Playgroud)

main.h:

#ifndef MAIN_FUNC

#define MAIN_FUNC

#pragma comment(lib, "dxgi.lib")
#pragma comment(lib, "d3d11.lib")
#pragma comment(lib, "d3dx11.lib")
#pragma comment(lib, "d3dx10.lib")

#include <Windows.h>
#include <dxgi.h>
#include <d3dcommon.h>
#include <d3d11.h>
#include <d3dx10math.h>
#include "direct3d.h"

int …
Run Code Online (Sandbox Code Playgroud)

c c++ directx directx-11

0
推荐指数
1
解决办法
883
查看次数

HLSL SamplerStates

我正在尝试在HLSL文件中定义一个简单的SamplerState以用于纹理.编译着色器时,出现错误:

error X3004: undeclared identifier 'Filter'
Run Code Online (Sandbox Code Playgroud)

资源:

// part of render.hlsl
SamplerState linear_sample=
{
    Filter=MIN_MAG_MIP_LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};
Run Code Online (Sandbox Code Playgroud)

汇编:

hr=D3DX10CreateEffectFromFile("render.hlsl",NULL,NULL,"fx_4_0",D3D10_SHADER_ENABLE_STRICTNESS | D3D10_SHADER_DEBUG,0,dx_device,NULL,NULL,&dx_effect,&dx_err,NULL);'
Run Code Online (Sandbox Code Playgroud)

我已经在MSDN上查看了,我的HLSL文件似乎没有任何问题.我编译不正确吗?

c++ directx hlsl

0
推荐指数
1
解决办法
1926
查看次数

GetCursorPos的问题

我遇到了GetCursorPos的问题.我用directx画一个光标所在的方块,但我的代码不起作用,我不明白为什么......

LPPOINT cursorPos = 0;
GetCursorPos(cursorPos);
square->setPosition(D3DXVECTOR2(40.0f,60.0f));  // as a test: works fine...
square->setPosition(D3DXVECTOR2(cursorPos->x, cursorPos->y)); // -> crash
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

LPPOINT cursorPos = 0;
GetCursorPos(cursorPos);
float posX = cursorPos->x;  // no crash...
float posY = cursorPos->y;  // no crash...
std::cout << posX << posY <<std::endl; // CRASH!
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么??

c++ windows directx winapi

0
推荐指数
1
解决办法
1089
查看次数

模板功能分支优化

我正在尝试编写一个模板方法来为Direct3D创建着色器.用于创建每种类型着色器的API函数以及着色器的类型具有不同的名称.所以,我写了以下代码:

class Shader final
{
public:
    explicit Shader( _In_ ID3DBlob *const pBlob );

    template <class T>
    void Create
        ( std::weak_ptr<ID3D11Device>& pDevice
        , CComPtr<T>& pResource )
    {
        auto p_Device = pDevice.lock();

        if ( mp_Blob && p_Device )
        {
            HRESULT hr = E_FAIL;
            ID3D11ClassLinkage* pClassLinkage = nullptr; // unsupported for now
            pResource.Release();
            CComPtr<ID3D11DeviceChild> pRes;
            if ( std::is_same<T, ID3D11VertexShader>() )
            {
                hr = p_Device->CreateVertexShader
                    ( mp_Blob->GetBufferPointer()
                    , mp_Blob->GetBufferSize()
                    , pClassLinkage
                    , reinterpret_cast<ID3D11VertexShader**>( &pRes ) );
            }
            else if ( std::is_same<T, ID3D11HullShader>() )
            { …
Run Code Online (Sandbox Code Playgroud)

c++ directx templates c++11

0
推荐指数
1
解决办法
223
查看次数

为什么我们在Pixel Shader中实现照明?

我正在阅读Frank D. Luna的DirectX 11 3D游戏编程简介,似乎无法理解我们为什么要在Pixel Shader中实现照明?如果你能给我发一些关于这个主题的参考页面,我将不胜感激.

谢谢.

directx lighting hlsl pixel-shader

0
推荐指数
1
解决办法
490
查看次数

OpenGL处理​​器是独立的吗?

换句话说,是否有任何GPU不支持OpenGL,而是支持其他图形渲染库,如DirectX,OpenCl.

opengl directx gpu opencl

0
推荐指数
1
解决办法
97
查看次数

如何将二次贝塞尔曲线代码转换为三次贝塞尔曲线?

所以我最近选择了图形编程,我想计算一个立方Bézier曲线.我在二次Bézier上找到了这个优秀的答案,但我不知道如何将其转换为立方Bézier曲线.

c++ opengl directx bezier curve

0
推荐指数
1
解决办法
3992
查看次数

如何计算2个向量之间的角度,以进行旋转?

我有2个具有相同原点的矢量,我只想旋转一个以匹配另一个.但是,我无法找到数学能够计算两者之间的x角度,y角度和z角度(世界坐标).它也可以在局部坐标中获得这个角度,我不知道它是否有帮助但是前向矢量(局部Y)周围的旋转可以是任何无关紧要的.我只需要我的对象面向正确的方向.

我该怎么办?

c# opengl math directx unity-game-engine

0
推荐指数
1
解决办法
338
查看次数