Вопрос довольно прост. В Windows у вас есть BitBlt() для рисования на экране. На OS X вы обычно можете использовать OpenGl, но как рисовать растровое изображение на экране с помощью новой металлической рамки Apple? Я не могу найти ничего ценного в ссылках на Яблоки. Я сейчас использую Core Graphics для части чертежа, но поскольку мое растровое изображение постоянно обновляется, мне кажется, что я должен перейти на Metal, чтобы уменьшить накладные расходы.Рисование растрового изображения с использованием металла
ответ
Очень короткий ответ таков: во-первых, вам нужно настроить стандартный конвейер рендеринга с помощью Metal, который немного работает, если вы ничего не знаете о конвейере рендеринга (обратите внимание: но это можно упростить избегая трехмерного материала, создавая квадрат с двумя треугольниками, просто дайте xy координаты для вершин). Существует много примеров кода от Apple, который показывает, как настроить стандартный конвейер рендеринга, самым простым может быть MetalImageProcessing, поэтому вы можете снять этот снимок (хотя он использует сложный шейдер, который слишком усложнен для рисования, вам нужно заменить его на стандартные вершинные и фрагментарные шейдеры).
Во-вторых, вам нужно узнать, как работают вершинные и фрагментарные шейдеры и как рисовать материал с ними, см. Shadertoy для этого.
Только что заметил последний комментарий пользователей, если у вас есть массив байтов, представляющих изображение, тогда вы можете просто сделать MTLTexture из этого и отобразить его на экране, см. Пример Apple выше, но изменить вычислительный шейдер на стандартный вершин и фрагментов шейдеров для повышения производительности.
Благодарим вас за ответ! Будет ли это быстрее, чем использование CoreGraphics? Предполагая, что я перерисовываю битмап 60 раз в секунду и что он довольно большой и используется для полноэкранного просмотра. В противном случае мне не нужно было проходить этот гораздо более сложный путь. – user148013
Да, он будет быстрее, чем CoreGraphics, когда он настроен, вы можете визуализировать текстуру 1080p примерно за 1-3 мс с помощью Металла, чтобы он мог легко работать со скоростью 60 кадров в секунду, но независимо от того, будет ли это способ, зависит от нескольких факторов, в основном касаются того, что вы рисуете, как вы его рисуете, как быстро вы можете подготовить его для GPU (MTLTexture) или хотите ли вы рисовать с помощью шейдеров (что может быть очень неудобно), в последнем случае вы в основном имеете xy координаты, и весь ваш рисунок должен быть чистой математикой, нет удобных функций, которые вы найдете в CoreGraphics. – Gary
Я не и не буду использовать любую библиотеку для рендеринга моих вещей в растровое изображение. – user148013
- 1. Рисование растрового изображения с использованием DrawImage
- 2. Рисование растрового растрового изображения с анти-псевдонимом
- 3. Рисование набора векторов с использованием металла
- 4. Рисование изображения поверх растрового изображения
- 5. Рисование растрового изображения на ImageButton
- 6. Рисование в контексте растрового изображения
- 7. Рисование растрового изображения в C#
- 8. Рисование с использованием растрового изображения на PictureBox в C#
- 9. Android - Рисование линий с использованием растрового изображения на TouchImageView
- 10. Рисование растрового изображения с общим источником
- 11. Рисование с глубиной до растрового изображения
- 12. Рисование растрового изображения на экран размыто ???
- 13. WPF: рисование растрового изображения - нарушение доступа?
- 14. Рисование растрового изображения в различной деятельности
- 15. Рисование прозрачного растрового изображения на панели
- 16. Android - Рисование растрового изображения в холсте
- 17. Рисование растрового изображения на основе преобразованного movieclip
- 18. C# Рисование растрового изображения над другим
- 19. Рисование растрового изображения в Live Wallpaper
- 20. Рисование растрового изображения до размера холста
- 21. Рисование базового растрового изображения на вид андроида
- 22. Рисование растрового изображения VSIS на невидимой области
- 23. Рисование растрового изображения в качестве поверхностного изображения Background
- 24. Android - Маскирование растрового изображения с использованием другого растрового изображения
- 25. Рисование изображения с использованием Raphael.js
- 26. Преобразование изображения EmguCV в системное рисование растрового изображения
- 27. Рисование растрового изображения на изображении с каждым касанием - андроид
- 28. Рисование растрового изображения на холсте с альфа-градиентом
- 29. Рисование растрового изображения с относительным макетом возвращает unsargargumentexception
- 30. C# Рисование растрового изображения на определенную точку в PictureBox
вот почему нам нужно «недостаток минимального понимания» назад – tbodt
Нет причин, по которым вам нужно будет использовать Металл для рисования изображений. '- [NSImage drawInRect:]' будет прекрасно. – tbodt
Не слишком ли NSImage по сравнению с металлом? Что делать, если я обновляю растровое изображение 30 раз в секунду? Я попросил «Металл», потому что я хочу использовать «Металл». – user148013