車中泊に挑戦してみた!

仕事が一段落したら長期休暇をとって、西日本を周ってみたいと考えており、安くて運転しやすいバンコンか、高いけど快適なキャブコンか、実際に乗ってみて考えたいと思っています。

まずはバンコンタイプのアルトピアーノを24Hレンタルして自宅の駐車場で車中泊してみました。

www.toyota-mobility-kanagawa.jp

家族3人でのドライブは快適でしたが、車中泊となると1人だったら快適と感じました。またFFヒーターやエアコンがないため季節を選ぶとも思いました。

つぎにキャブコンタイプのレジストロアウルを予約してみました。

www.mystic.ne.jp

こちらはFFヒーターやエアコンもあり、バンクベッドもあることから、2人でも快適に車中泊できそうです。ただし自宅の駐車場には高さが足りなくて入らないため、今回はPAでの車中泊に挑戦してみようと思います。

ナムコミュージアム アンコール

自分の部屋にPS3が戻ってきたので、PS1 ナムコミュージアムをやり直しています。

ひととおり遊んだ評価は、

あくまで自分の好みですが、世界観が好きで遊んでいて楽しいものは○、遊べるものは△、世界観が好きではないものは×としました。

高校受験に挑戦してみた

子どもが高校受験を終えました!

地元の公立小学校でのんびり過ごしていましたが、お受験が盛んな地域という事もあり、なんと!学年の半数近くが中学受験をして中高一貫校へ進学しました。 一方でうちの子どもは小学生の頃は、ピアノ、水泳、英会話、野球などをやっており、とくに成績もよくなかった事から中学受験はしませんでした。しかし高校受験は避けられない事から、中学1年から塾に通いはじめました。

自分は国立学院予備校(現ena)で高校受験しましたが、うちの近くにはなかったので難関校受験の実績があるSAPIXにしました。(あとで分かったのは、早稲田アカデミーの方が実績はあるみたいです)

中学1ー2年の頃は部活が忙しい事もあり塾に通うのがせいいっぱいで、最初は5教科習っていたものも公立はあきらめて3教科にしぼる事になりました。またSAPIX偏差値は30-40台で、学校の成績もほぼオール3でした。 中学2年の終わり頃に塾の先生との面談で、宿題をきちんとやっていないとお叱りを受けました。自分がテキストを確認したところまっ白なページが多く、このままではまずいと自宅で2年生のテキストをすべて解くようにしました。さいわいにも国語は成績が悪くなかったため、数学と英語のテキストだけを復習していきました。 中学3年になると部活も引退し、自宅で復習していた2年生のテキストも終わったことから、偏差値が40-50台に上がってきました。

実力を考えて志望校をMARCH/日東駒専とし、すべり止めに1つ私立を併願優遇で受験する事にしました。(SAPIXの偏差値は世間一般マイナス20くらい)

中学3年の冬は追い込みです。志望校の過去問を中心に勉強する事で本番に備えます。いろいろありましたが結果すべての受験した高校で合格する事ができました!

高校受験を終えた感想としては、実績のある塾できちんとテキストを理解して、実力にあった高校の過去問対策をして受験すれば、結果につながると思いました。部活との両立はつらく塾の学費は高いですが、途中経過が今ひとつだったとしても続ける事が大事だと実感しました。

ちょっとだけDirectX11その2

表題の書籍のサンプルプログラムをSharpDXで書いてみる。

f:id:tanam:20210206092224p:plain

using System;
using SharpDX;
using SharpDX.D3DCompiler;
using SharpDX.Direct3D;
using SharpDX.Direct3D11;
using SharpDX.DXGI;
using SharpDX.Windows;
using Buffer = SharpDX.Direct3D11.Buffer;
using Device = SharpDX.Direct3D11.Device;

namespace Sankaku
{
    /// <summary>
    ///   SharpDX port of SharpDX-MiniTri Direct3D 11 Sample
    /// </summary>
    internal static class Program
    {
        [STAThread]
        private static void Main()
        {
            var form = new RenderForm("SharpDX - Direct3D 11 サンプル Sankaku01");

            // SwapChain description
            var desc = new SwapChainDescription()
            {
                BufferCount = 1,
                ModeDescription =
                                   new ModeDescription(640, 480,
                                                       new Rational(60, 1), Format.R8G8B8A8_UNorm),
                IsWindowed = true,
                OutputHandle = form.Handle,
                SampleDescription = new SampleDescription(1, 0),
                SwapEffect = SwapEffect.Discard,
                Usage = Usage.RenderTargetOutput
            };

            // Create Device and SwapChain
            Device device;
            SwapChain swapChain;
            Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.None, desc, out device, out swapChain);
            var context = device.ImmediateContext;

            // Ignore all windows events
//            var factory = swapChain.GetParent<Factory>();
//            factory.MakeWindowAssociation(form.Handle, WindowAssociationFlags.IgnoreAll);

            // New RenderTargetView from the backbuffer
            var backBuffer = Texture2D.FromSwapChain<Texture2D>(swapChain, 0);
            var renderView = new RenderTargetView(device, backBuffer);

            // Compile Vertex and Pixel shaders
            var vertexShaderByteCode = ShaderBytecode.CompileFromFile("MiniTri.fx", "VS", "vs_4_0", ShaderFlags.None, EffectFlags.None);
            var vertexShader = new VertexShader(device, vertexShaderByteCode);

            var pixelShaderByteCode = ShaderBytecode.CompileFromFile("MiniTri.fx", "PS", "ps_4_0", ShaderFlags.None, EffectFlags.None);
            var pixelShader = new PixelShader(device, pixelShaderByteCode);

            // Layout from VertexShader input signature
            var layout = new InputLayout(
                device,
                ShaderSignature.GetInputSignature(vertexShaderByteCode),
                new[]
                    {
                        new InputElement("POSITION", 0, Format.R32G32B32A32_Float, 0, 0),
                        new InputElement("COLOR", 0, Format.R32G32B32A32_Float, 16, 0)
                    });

            // Instantiate Vertex buiffer from vertex data
            //            var vertices = Buffer.Create(device, BindFlags.VertexBuffer, new[]
            //                                  {
            //                                      new Vector4(0.0f, 0.5f, 0.5f, 1.0f), new Vector4(1.0f, 0.0f, 0.0f, 1.0f),
            //                                      new Vector4(0.5f, -0.5f, 0.5f, 1.0f), new Vector4(0.0f, 1.0f, 0.0f, 1.0f),
            //                                      new Vector4(-0.5f, -0.5f, 0.5f, 1.0f), new Vector4(0.0f, 0.0f, 1.0f, 1.0f)
            //                                  });

            var vertices = Buffer.Create(device, BindFlags.VertexBuffer, new[]
                                  {
                                      new Vector4(0.0f, 1.5f, 0.5f, 2.0f), new Vector4(1.0f, 1.0f, 1.0f, 2.0f),
                                      new Vector4(1.0f, -1.0f, 0.5f, 2.0f), new Vector4(1.0f, 1.0f, 1.0f, 2.0f),
                                      new Vector4(-1.0f, -1.0f, 0.5f, 2.0f), new Vector4(1.0f, 1.0f, 1.0f, 2.0f)
                                  });
            
            // Prepare All the stages
            context.InputAssembler.InputLayout = layout;
            context.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;
            context.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(vertices, 32, 0));
            context.VertexShader.Set(vertexShader);
            context.Rasterizer.SetViewport(new Viewport(0, 0, 640, 480, 0.0f, 1.0f));
            context.PixelShader.Set(pixelShader);
            context.OutputMerger.SetTargets(renderView);

            // Main loop
            RenderLoop.Run(form, () =>
            {
                context.ClearRenderTargetView(renderView, new Color(0.0f, 0.5f, 0.7f, 1.0f));
                context.Draw(3, 0);
                swapChain.Present(0, PresentFlags.None);
            });

            // Release all resources
            vertexShaderByteCode.Dispose();
            vertexShader.Dispose();
            pixelShaderByteCode.Dispose();
            pixelShader.Dispose();
            vertices.Dispose();
            layout.Dispose();
            renderView.Dispose();
            backBuffer.Dispose();
            context.ClearState();
            context.Flush();
            device.Dispose();
            context.Dispose();
            swapChain.Dispose();
//            factory.Dispose();
        }
    }
}

第二種電気工事士の資格に挑戦してみる その5

ついに第二種電気工事士の資格取得しました!

さっそく免状交付のために、神奈川県電気工事工業組合本部事務局に行ってきました。

  • 受験用写真 800円
  • 免許用写真 800円
  • 住民票 300円
  • 神奈川県収入証紙 5300円

ちょっとだけDirectX11

表題の書籍でDirectX11の勉強をはじめる。

https://www.kohgakusha.co.jp/books/detail/978-4-7775-1501-1

ひっかかったのはDXSDK_Jun10のサンプルをビルドする必要があると言う事。

C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\Effects11

ここで作成されるEffects11.libをリネームして配置する必要がありました。

C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include\d3dx11effect.h
C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86\d3dx11effects.lib

サンプルプログラムをSharpDXで書いてみました。

using System;
using System.Windows.Forms;
using SharpDX;
using SharpDX.Direct2D1;
using SharpDX.DirectWrite;
using SharpDX.DXGI;
using SharpDX.Windows;
using TextAntialiasMode = SharpDX.Direct2D1.TextAntialiasMode;
using AlphaMode = SharpDX.Direct2D1.AlphaMode;
using Factory = SharpDX.Direct2D1.Factory;

namespace HelloApp
{

    /// <summary>
    /// Shows how to use DirectWrite to render simple text.
    /// Port of DirectWrite sample SimpleHelloWorld from Windows 7 SDK samples
    /// http://msdn.microsoft.com/en-us/library/dd742738%28v=VS.85%29.aspx
    /// </summary>
    public class Program
    {
        private FormWindowState _currentFormWindowState;
        private Form _form;
        public Factory Factory2D { get; private set; }
        public SharpDX.DirectWrite.Factory FactoryDWrite { get; private set; }
        public WindowRenderTarget RenderTarget2D { get; private set; }
        public SolidColorBrush SceneColorBrush { get; private set; }
        public TextFormat TextFormat { get; private set; }
        public RectangleF ClientRectangle { get; private set; }
        protected IntPtr DisplayHandle
        {
            get
            {
                return _form.Handle;
            }
        }
        protected void Initialize()
        {
            Factory2D = new SharpDX.Direct2D1.Factory();
            FactoryDWrite = new SharpDX.DirectWrite.Factory();
            HwndRenderTargetProperties properties = new HwndRenderTargetProperties();
            properties.Hwnd = DisplayHandle;
            properties.PixelSize = new SharpDX.Size2(640, 480);
            properties.PresentOptions = PresentOptions.None;
            RenderTarget2D = new WindowRenderTarget(Factory2D, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied)), properties);
            RenderTarget2D.AntialiasMode = AntialiasMode.PerPrimitive;
            SceneColorBrush = new SolidColorBrush(RenderTarget2D, Color.White);
            TextFormat = new TextFormat(FactoryDWrite, "メイリオ", 50) { TextAlignment = TextAlignment.Center, ParagraphAlignment = ParagraphAlignment.Center };
            RenderTarget2D.TextAntialiasMode = TextAntialiasMode.Cleartype;
            ClientRectangle = new RectangleF(0, 0, 640, 480);
            SceneColorBrush.Color = Color.Black;               
        }
        protected void Draw()
        {
            RenderTarget2D.Clear(Color.White);
            RenderTarget2D.DrawText("Hello, World!", TextFormat, ClientRectangle, SceneColorBrush);
        }

        private void HandleResize(object sender, EventArgs e)
        {
            if (_form.WindowState == FormWindowState.Minimized)
            {
                return;
            }

        }
        protected virtual Form CreateForm()
        {
            return new RenderForm("Direct2D Hello Application")
            {
                ClientSize = new System.Drawing.Size(640, 480)
            };
        }

        public void Run()
        {
            _form = CreateForm();
            Initialize();

            bool isFormClosed = false;
            bool formIsResizing = false;

            _form.Resize += (o, args) =>
            {
                if (_form.WindowState != _currentFormWindowState)
                {
                    HandleResize(o, args);
                }

                _currentFormWindowState = _form.WindowState;
            };

            _form.ResizeBegin += (o, args) => { formIsResizing = true; };
            _form.ResizeEnd += (o, args) =>
            {
                formIsResizing = false;
                HandleResize(o, args);
            };

            _form.Closed += (o, args) => { isFormClosed = true; };

            RenderLoop.Run(_form, () =>
            {
                if (isFormClosed)
                {
                    return;
                }
                RenderTarget2D.BeginDraw();
                Draw();
                RenderTarget2D.EndDraw();
            });
        }

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Program program = new Program();
            program.Run();
        }
    }
}