`
黑色杰克史密斯
  • 浏览: 16112 次
社区版块
存档分类
最新评论

D语言 bindings库 XAudio2 无法发音 ...

    博客分类:
  • n/a
 
阅读更多
头文件 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);

}
分享到:
评论

相关推荐

    SQLite3-bindings-for-Node.js-node-sqlite3.zip

    SQLite3_bindings_for_Node.js_node-sqlite3.zip SQLite3_bindings_for_Node.js_node-sqlite3.zip SQLite3_bindings_for_Node.js_node-sqlite3.zip SQLite3_bindings_for_Node.js_node-sqlite3.zip SQLite3_bindings...

    PyPI 官网下载 | zaber_motion_bindings_darwin-0.0.16.tar.gz

    《PyPI官网下载:探索zaber_motion_bindings_darwin-0.0.16.tar.gz中的Python库知识》 PyPI(Python Package Index)是Python开发者的重要资源库,它为全球Python用户提供了丰富的第三方库,方便了软件开发。在本文...

    MQ常用操作:设置、启停、建立队列、生成.bindings文件

    本文将详细介绍MQ的一些常用操作,包括配置调整、启动与停止队列管理器、创建队列以及生成`.bindings`文件等内容。 #### 一、MQ配置调整 在MQ的配置过程中,我们通常需要对队列管理器的参数进行调整以适应不同的...

    PyPI 官网下载 | giosgapps_bindings-0.0.22.tar.gz

    标题中的“PyPI 官网下载 | giosgapps_bindings-0.0.22.tar.gz”表明这是一个从Python Package Index(PyPI)官方源获取的软件包,名为`giosgapps_bindings`,版本号为0.0.22,格式为tar.gz。PyPI是Python社区中最...

    C++ bindings for the Godot script API.zip

    C++ bindings使得开发者可以直接用C++来编写Godot游戏的逻辑,从而利用C++的强大性能和丰富的库资源。 Godot的脚本API是其核心功能的一部分,提供了与游戏对象、场景、物理引擎、图形渲染、输入处理等各个方面的...

    Clang bindings for .NET written in C#.zip

    标题 "Clang bindings for .NET written in C#" 指的是一个项目,它实现了将Clang,一个C、C++和Objective-C的编译器前端,与.NET框架集成的接口。这个项目是用C#语言编写的,允许.NET开发者利用Clang的强大功能,如...

    Python库 | zaber_motion_bindings_linux-1.0.7.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:zaber_motion_bindings_linux-1.0.7.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    cxf-rt-bindings-soap-3.0.1-API文档-中文版.zip

    赠送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-...

    C++ Qt bindings for Node.js.zip

    标题 "C++ Qt bindings for Node.js.zip" 指的是一个使用C++编写的Qt库与Node.js交互的绑定项目。这个压缩包包含了使开发者能够利用Node.js运行时环境调用Qt库的功能,从而在Node.js应用中充分利用Qt丰富的图形用户...

    Python库 | i3bindings-1.0.0a1.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.pdf

    在计算机科学领域,C++是一种强大的编程语言,以其高效性和灵活性而闻名,而Python则以其简洁的语法和丰富的库生态系统受到欢迎。将这两种语言结合在一起,可以利用C++的高性能特性,同时利用Python的易用性和可扩展...

    Go-gousb是libusb一个Go语言封装

    Go-gousb是一个基于Go语言的库,它封装了libusb库,为Go开发者提供了一种在Go程序中与USB设备交互的便捷方式。libusb是一个跨平台的C语言库,用于与USB设备进行低级通信。通过gousb,Go程序员能够利用libusb的强大...

    keybindings(vscode快捷键).json

    vscode软件的一些基础配置。比如快捷键配置,软件基础配置,运行环境配置,插件配置,各个语言规范配置;

    up_958906_php-webdriver-bindings_ie2rk.rar

    标题中的"up_958906_php-webdriver-bindings_ie2rk.rar"暗示了这是一个关于PHP WebDriver Bindings的压缩文件,其中可能包含了相关的源代码、文档或示例。描述进一步确认了这一点,指出该库是用于创建PHP功能测试,...

    up_1014398_php-webdriver-bindings_t3zg2.rar

    【标题】"up_1014398_php-webdriver-bindings_t3zg2.rar" 提供的资源是关于 PHP 实现的 Webdriver 客户端绑定库,名为 "php-webdriver-bindings"。这个库使得 PHP 开发者能够编写自动化功能测试,与 WebDriver 进行...

    Objective-C bindings to libgit2.zip

    Objective-C bindings to libgit2.zip 是一个专门为Objective-C开发者设计的库,它提供了一种方式来利用libgit2这个强大的Git库。libgit2是一个用C语言编写的、轻量级且全面的Git库,它允许你在自己的应用程序中实现...

    zxing.dll zxing.net 版本:0.16.4.00

    在某些情况下,用户可能会遇到ZXing.Net项目库中未包含这个dll的情况,或者开发者仅需要ZXing.dll来完成特定的编码和解码任务,因此单独提供这个dll文件是为了方便开发者直接引用,无需完整下载整个项目库。...

    Python库 | zaber_motion_bindings_darwin-0.0.26-py3-none-any.whl

    python库。资源全名:zaber_motion_bindings_darwin-0.0.26-py3-none-any.whl

Global site tag (gtag.js) - Google Analytics