Руководство новичка по OpenGLES на iPhone

Если я понимаю ваш вопрос, возможно, вы хотите знать, как вручную проверить модель.

Вы можете использовать вызов TryValidateModel(modelInstance); для ручной проверки требуемой модели.

Для других условий, которые вы упомянули в вопросе, вы можете добавить операторы if.

например. Если все строковые свойства userProfileModelObject равны NULL, тогда проверьте accountModelInstance

bool isSecondObjectValid = userProfileModelObject.GetType().GetProperties()
    .Where(pi => pi.PropertyType == typeof(string))
    .Select(pi => (string)pi.GetValue(myObject))
    .Any(value => string.IsNullOrEmpty(value));


bool validationResult = false;
validationResult = !isSecondObjectValid ? 
                          TryValidateModel(accountModelInstance) :
                          TryValidateModel(userProfileModelObject);

. Надеюсь, это поможет.

Ссылки:

19
задан genpfault 18 June 2010 в 23:14
поделиться

7 ответов

У Саймона Мориса есть несколько отличных руководств по самым первым шагам. Взгляните: http://www.cocoachina.com/wiki/index.php?title=Category%3aSimon_Maurice_iPhone_OpenGL_ES . Выполняйте их с самого начала, и вы получите хорошее представление об основах.

РЕДАКТИРОВАТЬ:
Резервная ссылка
Исходный код

14
ответ дан 30 November 2019 в 03:43
поделиться

Еще раз, если я могу включить свою собственную работу, у меня есть короткая рецензия на том, что я изучил при записи Молекул для iPhone. Я вошел в это имеющее опыт с 3-D стороной OpenGL (я сделал немного 2-D аппаратного ускорения прежде), таким образом, у меня есть определенная другая точка зрения на предмет. Исходный код к Молекулам доступен, таким образом, Вы смогли узнавать о чем-то из ввода по абсолютному адресу вокруг внутренней части он. Я также записал сообщение о том, как использовать Базовые структуры Анимации и функции для ускорения OpenGL рендеринг ES, если Вы хотите что-то немного более техническое.

У Bill Dudney есть сообщение здесь о том, как он начал входить в OpenGL ES и затем последующее здесь, где он предоставляет код для Волнового фронта загрузчик Объекта для iPhone.

Я полагаю, что видел несколько более хороших ресурсов вокруг Переполнения стека в различных ответах, таким образом, Вы могли бы искать вокруг и видеть то, что еще можно найти здесь.

4
ответ дан 30 November 2019 в 03:43
поделиться

Вам нужна только одна ссылка:

Да, часть документации не имеет большой смысл в первый раз, когда Вы читаете его, но действительно, читаете предложение/абзац/страницу снова, и снова. Это действительно имеет смысл, и это очень точно. Который является чем-то, что Вы действительно не можете сказать из учебных руководств. Учебные руководства почти всегда пишутся людьми, которые не кажутся слишком суетившимися об игнорировании важных деталей, в то время как документация как этот обычно пишется очень nitpicky люди, которые переполняют каждый небольшой важный факт в (возможно чрезмерно сложный) предложения.

О, и одна золотая подсказка: Добавьте поисковую функцию к своему браузеру, который делает это:

http://www.google.com/search?q=%s+site%3Awww.khronos.org%2Fopengles%2Fsdk%2F1.1%2Fdocs%2Fman%2F&btnI

(замена %s чем замещающая строка критерия поиска Вашего браузера, вышеупомянутый пример для Opera),

Я связал его с o префикс, поэтому каждый раз, когда я должен искать что-то на OpenGL/ES, я просто, вводит o glDrawElements в строке поиска и немедленно получают страницу документации на нем.

9
ответ дан 30 November 2019 в 03:43
поделиться

Поскольку OpenGL NeHe является большим учебным руководством. Хотя, это конкретно не покрывает OpenGLES, это должно все еще быть довольно полезно. Просто будьте готовы столкнуться с вещами время от времени, которые не будут работать над iPhone.

Также можно получить v1.1 если "Красная книга" онлайн.

3
ответ дан 30 November 2019 в 03:43
поделиться

Прежде чем вводить оптимизацию производительности за счет удобочитаемости, изучите такие модули, как psyco, которые будут выполнять некоторую JIT-компиляцию отдельных функций, часто с поразительными результатами, без ущерба для читаемости.

Тогда, если вы действительно хотите встать на путь оптимизации, вы должны сначала научиться измерять и профилировать. Оптимизация ДОЛЖНА БЫТЬ КОЛИЧЕСТВЕННОЙ - не соглашайтесь с интуицией. Профилировщик хот-спотов покажет вам функции, в которых ваша программа сжигает больше всего времени.

Если при оптимизации появляется такая функция, которая часто вызывается:

def get_order_qty(ordernumber):
    # look up order in database and return quantity

Если есть какое-либо повторение номеров заказов, то мемоизация будет хорошая техника оптимизации для изучения, и она легко упаковывается в декоратор @memoize, так что это мало влияет на читаемость программы. Эффект мемоизации заключается в том, что значения, возвращаемые для заданного набора входных аргументов, кэшируются, так что дорогостоящая функция может быть вызвана только один раз, с последующими вызовами, разрешенными против кеша.

Наконец, рассмотрите возможность вывода инвариантов из циклов. Для больших многомерных структур это может сэкономить много времени - фактически, в этом случае я бы сказал, что эта оптимизация улучшает читаемость , поскольку она часто служит для того, чтобы прояснить, что некоторые выражения могут быть вычислены при измерение высокого уровня во вложенной логике.

(Кстати, это действительно то, что вы имели в виду? • В операторе if с символом или всегда помещайте сначала условие, которое, скорее всего, не сработает, поэтому второе не будет проверяться.

Я думаю, что это могло быть так для «и», но «или» будет сокращать- схема, если первое значение - Истина, сохраняя оценку второго члена условного. Поэтому я бы изменил это «правило» оптимизации на:

  • Если тестируете «A и B», сначала ставьте A, если более вероятно, что оценка будет
    Неверно.
  • При тестировании «A или B» сначала ставьте A, если это более вероятно, чтобы оценить еще одна полезная книга с учебниками и справочниками - это OpenGL SuperBible .

    Опять же, не только для OpenGLES, но я считаю, что полезно изучить возможности OpenGL в целом, а затем отфильтровать те, которые вам не нужны.

0
ответ дан 30 November 2019 в 03:43
поделиться

Руководство Саймона Мориса можно найти здесь

3
ответ дан 30 November 2019 в 03:43
поделиться

"Красная книга" не рекомендуется начинающим OpenGL/OpenGLES. Это книга для профессионалов. Первый шаг - попробовать запустить скачанные простые программы или простые коды с сайтов OpenGL.

1
ответ дан 30 November 2019 в 03:43
поделиться