UnityGUI vs GL

Раздел, посвящённый самому важному - скорости.

UnityGUI vs GL

Сообщение gnoblin 12 окт 2010, 22:50

вывел 600 картинок через GUI.Label и через GL.LoadPixelMatrix (разрешение 1024х768, положил текстурку 32х32): 270 fps vs 630 fps

GUI.Button: 130 фпс

а GUILayout.Label с BeginHorizontal()\EndHorizontal() и GUILayout.Width\Height: 170 фпс

110 фпс для GUILayout.Button

Вывод: для некоторых частей гуи можно использовать GL или 3д плашки \ Sprite Manager :D

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class ButtonTest : MonoBehaviour
{
    static int dim_x = 30;
    static int dim_y = 20;

    Rect[,] rects = new Rect[dim_y, dim_x];
    float w = 20f;

    void Start()
    {
        for (int i = 0; i < dim_y; i++)
        {
            for (int j = 0; j < dim_x; j++)
            {
                rects[i, j] = new Rect(j * w, i * w, w, w);
            }
        }
    }
    //int[] ms;
    string s = "";
    public Texture tx;
    void OnGUI()
    {


        for (int i = 0; i < dim_y; i++)
        {
            GUILayout.BeginHorizontal();
            for (int j = 0; j < dim_x; j++)
            {
               
                GUILayout.Button(tx,GUILayout.Width(rects[i, j].width), GUILayout.Height(rects[i, j].height));
            }
            GUILayout.EndHorizontal();
        }
    }


    public Material mat;
    //void OnPostRender()
    //{
    //    if (mat == null)
    //    {
    //        Debug.LogError("Please Assign a material on the inspector");
    //        return;
    //    }
    //    GL.PushMatrix();
       
    //    mat.SetPass(0);

    //    //for (int i = 0; i < dim_y; i++)
    //    //{
    //    //    for (int j = 0; j < dim_x; j++)
    //    //    {

    //    //        //GUI.Label(rects[i, j], tx);
    //    //    }
    //    //}
    //    GL.LoadPixelMatrix();
    //    GL.Color(Color.red);
    //    //using!
    //    GL.Begin(GL.TRIANGLES);

    //    for (int i = 0; i < dim_y; i++)
    //    {
    //        for (int j = 0; j < dim_x; j++)
    //        {

    //            //GUI.Label(rects[i, j], tx);

    //            GL.TexCoord(new Vector3(0, 0, 0)); GL.Vertex3(rects[i, j].x, rects[i, j].y, 0);
    //            GL.TexCoord(new Vector3(0, 1, 0)); GL.Vertex3(rects[i, j].x, rects[i, j].yMax, 0);
    //            GL.TexCoord(new Vector3(1, 0, 0)); GL.Vertex3(rects[i, j].xMax, rects[i, j].y, 0);

    //            GL.TexCoord(new Vector3(1, 0, 0)); GL.Vertex3(rects[i, j].xMax, rects[i, j].y, 0);
    //            GL.TexCoord(new Vector3(0, 1, 0)); GL.Vertex3(rects[i, j].x, rects[i, j].yMax, 0);
    //            GL.TexCoord(new Vector3(1, 1, 0)); GL.Vertex3(rects[i, j].xMax, rects[i, j].yMax, 0);
    //        }
    //    }
    //    GL.End();
       
    //    GL.PopMatrix();
    //}

}
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: UnityGUI vs GL

Сообщение Paul Siberdt 12 окт 2010, 22:53

Вот такой гуёвый гуй... сплошное гуё-моё :D
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: UnityGUI vs GL

Сообщение Neodrop 13 окт 2010, 00:59

Не, ну это не серьёзный вывод. Если у тебя в программе 600 GUI элементов, то это не программа, а караул какой то.
Лично я (сказала маленькая, но гордая птичка) подожду выхода [unity 3D] 3.1 (где обещали новый гуй).
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: UnityGUI vs GL

Сообщение Paul Siberdt 13 окт 2010, 07:43

Нео, если делать игрульку а-ля Мач3 с красочными гуёвыми эффектами, вполне можно на особо сильном "бабахе" получить несколько сотен элементов. Или гуёвая PlantsVsZombies.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: UnityGUI vs GL

Сообщение Neodrop 13 окт 2010, 13:21

Не-не, демон, iOS мы вовсе не рассматриваем как платформу для применения нынешней гуёвой магии.
Если делать 2D игру, я бы делал плашками или GL (опять же, GL вроде не работает на iOS).
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: UnityGUI vs GL

Сообщение gnoblin 13 окт 2010, 14:08

А кто говорил про iOS?

Новый тест:

600 GUI.Label в одном онгуи 270 фпс
600 GUI.Label в 4х онгуи 245 фпс
т.е. по 150 лейблов в каждом из 4х онгуи
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт


Вернуться в Оптимизация

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4