头文件 XAudio2.d 里 interface IXAudio2Voice 改为 extern(C++) interface IXAudio2Voice
不要继承自 COM 抽象基类 IUnknown 即可 (这帮为D DirectX 编写的程序员可能是粗心了 没注意到吧 ... 话说写完自己也不测试一下吗 ..-_-)
以及一下都要改 跟上面是一样的 ...
IXAudio2EngineCallback
IXAudio2VoiceCallback
以及一切继承至 IXAudio2Voice 的类 ...
参考自 : http://forum.dlang.org/thread/zweofbqiitqvykcnwvya@forum.dlang.org?page=2
附一个不成熟的测试 代码
pragma (lib, "gdi32.lib");
pragma (lib, "d3d9.lib");
pragma (lib, "winmm.lib");
pragma (lib, "ole32.lib");
import core.runtime;
// import core.sys.windows.windows;
import win32.directx.d3d9;
import win32.windows;
import core.stdc.stdio;
import win32.directx.xaudio2;
import std.string;
import std.conv;
import std.math;
__gshared byte soundData[441000];
void main(){
CoInitializeEx(null, 0);
IXAudio2 pXAudio2 = null;
IXAudio2SourceVoice pSourceVoice = null;
IXAudio2MasteringVoice pMasteringVoice = null;
HRESULT hr = XAudio2Create(pXAudio2);
printf("XAudio2Create Result:%08X\n", hr);
hr = pXAudio2.CreateMasteringVoice(&pMasteringVoice);
printf("CreateMasteringVoice Result:%08X\n", hr);
WAVEFORMATEX waveformat;
waveformat.wFormatTag = cast(WORD)0;
waveformat.nChannels = 1;
waveformat.nSamplesPerSec = 44100;
waveformat.nAvgBytesPerSec = 88200;
waveformat.nBlockAlign = 2;
waveformat.wBitsPerSample = 16;
waveformat.cbSize = 0;
hr = pXAudio2.CreateSourceVoice(&pSourceVoice, &waveformat);
printf("CreateSourceVoice Result:%08X\n", hr);
hr = pSourceVoice.Start(0, XAUDIO2_COMMIT_NOW);
printf("Start Result:%08X\n", hr);
for (int index=0; index < 441000; index++)
soundData[index] = cast(ubyte)(127*sin(6.28*(cast(float)(index%110))/cast(float)110));
XAUDIO2_BUFFER buffer;
buffer.AudioBytes = 441000;
buffer.pAudioData = cast(ubyte*)soundData.ptr;
buffer.Flags = XAUDIO2_END_OF_STREAM;
buffer.PlayBegin = 0;
buffer.PlayLength = 5 * 44100;
Sleep(1000);
pSourceVoice.SubmitSourceBuffer(&buffer);
Sleep(5000);
}
分享到:
相关推荐
资源来自pypi官网。 资源全名:giosgapps_bindings-0.0.22.tar.gz
资源分类:Python库 所属语言:Python 资源全名:zaber_motion_bindings_linux-1.0.7.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
赠送jar包:cxf-rt-bindings-soap-3.0.1.jar; 赠送原API文档:cxf-rt-bindings-soap-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-bindings-soap-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-bindings-soap-...
Clang bindings for .NET written in C#
C++ bindings for the Godot script API
资源来自pypi官网。 资源全名:zaber_motion_bindings_darwin-0.0.16.tar.gz
资源分类:Python库 所属语言:Python 资源全名:i3bindings-1.0.0a1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Extending PCL for use with Python Bindings generation using Pybind11,介绍如何使用Pybind11生成Python Bindings。
vscode软件的一些基础配置。比如快捷键配置,软件基础配置,运行环境配置,插件配置,各个语言规范配置;
Selenium Python Bindings Release 2 Baiju Muthukadan April 11, 2012 CONTENTS 1 Installation 3 1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...
C++ Qt bindings for Node.js
python库。资源全名:zaber_motion_bindings_darwin-0.0.26-py3-none-any.whl
资源来自pypi官网。 资源全名:py_bip39_bindings-0.1.0.tar.gz
赠送jar包:cxf-rt-bindings-xml-3.0.1.jar; 赠送原API文档:cxf-rt-bindings-xml-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-bindings-xml-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-bindings-xml-3.0.1....
Objective-C bindings to libgit2.zip
MQ常用操作:设置、启停、建立队列、生成.bindings文件
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
gousb是libusb一个Go语言封装