コード例 #1
0
ファイル: DeltaTime.cs プロジェクト: KWEngine/KWEngine2
        internal static void UpdateDeltaTime()
        {
            float currTimePick_ms = Watch.ElapsedMilliseconds;
            float realTimeElapsed_ms;

            if (lastRealTimeMeasurement_ms > 0)
            {
                realTimeElapsed_ms = (currTimePick_ms - lastRealTimeMeasurement_ms);
            }
            else
            {
                realTimeElapsed_ms = GLWindow.CurrentWindow._vSync ? 16.66667f : smoothedDeltaRealTime_ms; // just the first time
            }
            movAverageDeltaTime_ms     = (realTimeElapsed_ms + movAverageDeltaTime_ms * (movAveragePeriod - 1)) / movAveragePeriod;
            smoothedDeltaRealTime_ms   = smoothedDeltaRealTime_ms + (movAverageDeltaTime_ms - smoothedDeltaRealTime_ms) * smoothFactor;
            deltaTimeFactor            = HelperGeneral.Clamp(smoothedDeltaRealTime_ms / TargetFrameTime, 0.00001f, 10);
            lastRealTimeMeasurement_ms = currTimePick_ms;
        }
コード例 #2
0
        internal static void SaveTextureToBitmap16(int texId, string name = null)
        {
            GL.Flush();
            GL.Finish();
            GL.BindTexture(TextureTarget.Texture2D, texId);
            GL.GetTextureLevelParameter(texId, 0, GetTextureParameter.TextureWidth, out int width);
            GL.GetTextureLevelParameter(texId, 0, GetTextureParameter.TextureHeight, out int height);
            Bitmap b = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

            float[] data = new float[width * height * 4];
            GL.GetTexImage(TextureTarget.Texture2D, 0, OpenTK.Graphics.OpenGL4.PixelFormat.Bgra, PixelType.Float, data);
            GL.BindTexture(TextureTarget.Texture2D, 0);

            int x = 0, y = height - 1;

            for (int i = 0; i < data.Length; i += 4)
            {
                float rd = HelperGeneral.Clamp(data[i] * byte.MaxValue, 0, 255);
                float gn = HelperGeneral.Clamp(data[i + 1] * byte.MaxValue, 0, 255);
                float bl = HelperGeneral.Clamp(data[i + 2] * byte.MaxValue, 0, 255);
                float al = HelperGeneral.Clamp(data[i + 3] * byte.MaxValue, 0, 255);


                byte red   = (byte)rd;
                byte green = (byte)gn;
                byte blue  = (byte)bl;
                byte alpha = (byte)al;
                b.SetPixel(x, y, Color.FromArgb(alpha, red, green, blue));
                int prevX = x;
                x = (x + 1) % width;
                if (prevX > 0 && x == 0)
                {
                    y--;
                }
            }
            b.Save(name == null ? "texture2d_16_tonemapped_rgba.png" : name, ImageFormat.Png);
            b.Dispose();
        }