差分

ナビゲーションに移動 検索に移動

MonoGame/シェーダーを使う

3,340 バイト除去, 2017年11月24日 (金) 04:05
Administrator がページ「MonoGame/シェーダーを使う」を「MonoGameでプログラマブルシェーダーを使う」に移動しました
[[MonoGame]]で[[マウス]]を使用する。主に[[MonoGame/クラスライブラリ/Mouseクラス|Mouseクラス]]のGetStateメソッドを使ったサンプル。マウスで「[[ぷにコン]]」みたいのを表示してみる。少し改造して[[MonoGame/クラスライブラリ/TouchPanelクラス| TouchPanelクラス]]に置き換えれば[[Android]]などで[[ぷにコン]]もどきになると思われる。 このサンプルではC3.MonoGame.Primitives2Dを使用し、その[[MonoGame/クラスライブラリ/SpriteBatchクラス|SpriteBatchクラス]]拡張メソッド群で円や直線の描画を行っている。C3.MonoGame.Primitives2DにNuGetパッケージはないのでGitHubからソースコードをダウンロードして入れよう。* https://github.com/z2oh/C3.MonoGame.Primitives2D  <source>using System; using Microsoft.Xna.Framework;using Microsoft.Xna.Framework.Graphics;using Microsoft.Xna.Framework.Input;using Microsoft.Xna.Framework.Input.Touch; using C3.MonoGame; namespace MonoGameSamples{ public class Game1 : Game { GraphicsDeviceManager graphics; SpriteBatch spriteBatch; Vector2? startPosition = null; Vector2? deltaPosition = null;  public Game1() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; }  protected override void Initialize() { // マウスカーソルを表示する this.IsMouseVisible = true;  base.Initialize(); }  protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); }  protected override void Update(GameTime gameTime) { #if !__IOS__ && !__TVOS__ if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) Exit();#endif  var mouse = Mouse.GetState(); if (mouse.LeftButton == ButtonState.Pressed) { if (startPosition == null) {// ドラッグ開始 startPosition = mouse.Position.ToVector2(); } else {// ドラッグ中 deltaPosition = mouse.Position.ToVector2(); } } else { startPosition = null; deltaPosition = null; }   base.Update(gameTime); }  protected override void Draw(GameTime gameTime) { graphics.GraphicsDevice.Clear(Color.CornflowerBlue);  spriteBatch.Begin(); { if (startPosition != null) {// 始点描画 spriteBatch.DrawCircle(startPosition.Value, 20, 16, Color.Red); }  if (deltaPosition != null) {// 現在点描画 spriteBatch.DrawLine(startPosition.Value, deltaPosition.Value, Color.White); spriteBatch.DrawCircle(deltaPosition.Value, 20, 16, Color.Red); } } spriteBatch.End();  base.Draw(gameTime); } }}</source> == 関連項目 ==* [[MonoGameでマウスカーソルを表示する]] 転送 [[category: MonoGameMonoGameでプログラマブルシェーダーを使う]]
匿名利用者

案内メニュー