Articles of 初始化

Direct3D 12不能创建交换链

我正在学习DirectX12,我试图创建一个简单的应用程序,用纯色清除屏幕,但我坚持在Direct3D初始化。 我无法创建交换链,DXGI工厂返回nullptr。 这是我的初始化代码: 布尔游戏:: InitializeD3D(){ID3D12Debug *debugging; D3D12GetDebugInterface(IID_PPV_ARGS(debugging)); debugging – > EnableDebugLayer(); // hardware result returned by functions HRESULT hr; // create device hr = D3D12CreateDevice(nullptr, D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&mDevice)); if (FAILED(hr)) MessageBox(0, L"device creation failed", L"error", MB_OK); // create fence mDevice->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&mFence)); // query descriptor size mRTVDescriptorSize = mDevice->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV); mDSVDescriptorSize = mDevice->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_DSV); mCBVSRVDescriptorSize = mDevice->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV); // […]

自动select后台缓冲区格式

在D3D9中,您可以在演示文稿参数中将BackBufferFormat设置为D3DFMT_UNKNOWN ,D3D将为您select格式。 但是,在D3D10中,如果将交换链描述符的BufferDesc.Format为DXGI_FORMAT_UNKNOWN , BufferDesc.Format DXGI_FORMAT_UNKNOWN此错误: D3D11 ERROR: ID3D11Device::CreateTexture2D: A Texture2D does not support the following Format (0, UNKNOWN). [ STATE_CREATION ERROR #92: CREATETEXTURE2D_UNSUPPORTEDFORMAT] 顺便说一句,如果我打电话给D3D10CreateDeviceAndSwapChain ,为什么我得到一个D3D11错误? 我猜想在Windows 8.1中d3d10是在幕后用d3d11实现的。 奇怪。 回到问题,我想让D3D为我select后台缓冲区格式,这有可能吗? 编辑 :如果不能自动select,我可以在哪里find一个很好的理由来select它自己? select的数量是莫名其妙的。

代码与configuration在Unity

我在这一点上知道一个或两个关于统一,但我仍然有很多主观,最佳实践的问题,如:如何决定通过开始/唤醒初始化获得什么值,以及哪些值明确序列化到现场? 在我目前的项目中,游戏对象和行为在一个复杂的图中互相引用。 最初,我在Start()上做了这个,用编程方式,有很多的raycast和GetComponent <>()等等。 现在,我只是宣布的东西公开(违反封装?),只是简单地序列化这个信息,一旦由编辑脚本生成的场景…哪个更正确? 我的方法应该是什么可以序列化的序列化? 还是写更多的初始化代码来传达一些解释为什么这些值是他们是什么?

初始化阶段时出错

我做了一个实现了Screen的新类,我从别人的代码中看到的是他们创建了一个构造函数,它带有一个Game游戏的参数。 我没有创建一个构造函数,我想这就是我得到这个错误的原因 public class MainMenu implements Screen{ public MainMenu(Game game){ //I dont know what are these for this.game = game; //<– } public void show() { btnAtlas=new TextureAtlas(Gdx.files.internal("bitters.atlas")); skin=new Skin(); skin.addRegions(btnAtlas); stage=new Stage(Gdx.graphics.getWidth(),Gdx.graphics.getHeight(),true);// I get the error here when initializing the Stage } } 错误是"Cannon resolve constructor 'Stage(int,int,boolean)'"

在RPG游戏中加载/select角色的不同方法

我在这里是全新的,并且一直在devise一个双人牌游戏,每个玩家从成千上万的牌中select80个牌DECK,然后与这些牌作战。 供参考Yu Gi Oh 有很多数据,一个玩家最多可以有3个卡片玩,他们在游戏开始之前select他们想要的卡片。 如何在开始游戏时加载这些信息? 游戏初始化的不同方式的任何建议吗? 就像“ 英雄联盟”等RPG游戏一样。

为什么AudioSource不能自行初始化?

为什么AudioSource不能自行初始化? 这是我的代码: using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraConfig : MonoBehaviour { public GameObject objToFollow; public bool followRabbit; // Use this for initialization void Start() { followRabbit = true; LevelController.current.cameraWhichLooksForRabbit = this; setMusicSource(); setSoundSources(); } public AudioClip music, rabbitWalksSound, rabbitDiesSound, rabbitFallsSound, enemyAttacksSound; private AudioSource musicSrc, rabbitWalksSrc, rabbitDiesSrc, rabbitFallsSrc, enemyAttacksSrc; private void […]

如何正确填写/初始化D3D11_SAMPLER_DESC?

如果我想明确地设置结构的每个参数,我只是这样做,就是这样。 但是,如果我只想设置其中的一部分并将其余部分保留为默认值呢? 我已经在一些教程中看到零结构: ZeroMemory(&samplerDesc, sizeof(D3D11_SAMPLER_DESC)); 但默认值( http://msdn.microsoft.com/en-us/library/windows/desktop/ff476207%28v=vs.85%29.aspx )并不总是0.这是不正确的? 我应该总是明确指定所有的值(特别是LOD值似乎棘手)? 我在问D3D11_SAMPLER_DESC但是其他DX结构可能也适用相同的规则?

LibGDX – 如何asynchronous做更多的事情

大多数文档只提到如何asynchronous加载资源,例如与类似的代码 private void render(float delta){ if (assetManager.update()){ // ** HERE ** // game.setScreen(new MainGameScreen(game)); } else { progress = assetManager.getProgress(); } // draw progress bar or whatever } 但是如果作为游戏初始化的一部分,在切换到主游戏屏幕(在上面的代码中用** HERE **标记)之前,我还得做其他的事情? 当然,用户仍然看到启animation面,但是如果我想在后台执行这些操作,并提供进度标志(另一个进度条,或其他),该怎么办。 我还没有find类似的事情的例子(或者我可能还没有看够难)。

不在构造函数中初始化一个对象是一个可怕的做法吗?

我目前正在研究自己的游戏引擎,更确切地说是在资源管理部分。 现在,我的大部分资产都inheritance了以下 – 简化类: class Asset { public: Asset(const char* file); virtual ~Asset(); virtual void load() = 0; virtual void unload() = 0; } 正如你所猜测的,构造函数和析构函数几乎不做任何事情,而load和unload函数分别初始化和删除所有资产的数据。 我这样做是因为我不想在每次创建资产对象时加载文件,而是在我的AssetsManager一个方法上进行AssetsManager ,这会加载所需的一切。 但是我仍然希望能够使用这些卸载资源来准备其他对象。 例如,可以在网格材料上设置卸载的纹理。 如果纹理未加载,则此材质将无法呈现。 问题是,我听说这是编写类结构的一个可怕的方式,特别是支持RAII习语的程序员。 这是处理资产的正确方法吗? 如果不是的话,这个class会有什么好处?