[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
前回では、ウィンドウが全く描画を行っていませんでした。
そのため、XP以前の環境だと他のウィンドウに隠されると跡が残ってたいへん見苦しいものでした。
これではいけません!
このような跡はすぐに消せるようにならなければなりません。
それが出来るようになったのが、以下のコードです:
using Microsoft.Xna.Framework; class MyGame : Game { GraphicsDeviceManager graphics; public MyGame() { graphics = new GraphicsDeviceManager(this); } protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); } static void Main() { using (MyGame game = new MyGame()) { game.Run(); } } }
class MyGame : Microsoft.Xna.Framework.Game { static void Main() { using (MyGame game = new MyGame()) { game.Run(); } } }
using System; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; namespace XnaDynamicAudio { static class Program { static void Main(string[] args) { const int samplePerSecond = 8000; const int secondsToPlay = 3; using (DynamicSoundEffectInstance dynamicSound = new DynamicSoundEffectInstance(samplePerSecond, AudioChannels.Mono)) { byte[] buffer = createAWave(samplePerSecond, secondsToPlay, 440); dynamicSound.SubmitBuffer(buffer); FrameworkDispatcher.Update(); dynamicSound.Play(); System.Threading.Thread.Sleep(secondsToPlay * 1000); } } private static byte[] createAWave(int samplePerSecond, int secondsToPlay, int heltz) { byte[] buffer = new byte[samplePerSecond * secondsToPlay]; for (int i = 0; i < buffer.Length; i++) { buffer[i] = (byte)( byte.MaxValue / 4 * (1 + Math.Sin((Math.PI * heltz) * i / samplePerSecond)) ); } return buffer; } } }