Способ и система сохранения в памяти пиксельных данных, связанных с графическим объектом
METHOD AND SYSTEM FOR STORING IN-MEMORY PIXEL DATA ASSOCIATED WITH GRAPHIC OBJECT

Область техники
[01] Настоящее техническое решение относится к системам и способам управления памятью и, конкретнее, к способу и системе сохранения в памяти пиксельных данных, связанных с графическим объектом.
Уровень техники
[03] WebGL позволяет модулю аппаратного обеспечения, например, видеокарте компьютера, отрисовывать графику. Основным достоинством архитектуры WebGL является тот факт, что аппаратная отрисовка графики обычно является более эффективной, чем программная отрисовка графической информации. Поскольку аппаратная отрисовка обычно обладает более высокой скоростью обработки, она, как правило, позволяет отрисовывать более сложную графику по сравнению с обычными способами программной отрисовки. Тем не менее, WebGL использует линейно организованную разметку памяти под пиксельные данные.
[04] В патенте США № US 6924811 описан способ сохранения текселей (texture element - текстурный элемент) в кэше текселей. Описанный способ включает в себя считывание координаты t текселя, которая включает в себя множество бит, считывание координаты s текселя, которая включает в себя множество бит, формирование смещения путем конкатенации бит координаты t с битами координаты s, и формирование индекса путем конкатенации бит координаты t с битами координаты s.
Раскрытие
[05] Настоящее техническое решение может уменьшить по меньшей мере некоторые недостатки, присущие текущему уровню техники, в отношении обработки поисковых запросов.
[06] Варианты осуществления настоящего технического решения были разработаны с учетом определения изобретателями по меньшей мере одного технического недостатка, связанного с известным уровнем техники. Описание WebGL обеспечивает максимум от 2048 до 16000 пикселей для каждой линейной части разметки виртуальной памяти. WebGL сохраняет пиксельные данные объекта в одномерном массиве. Если для данного объекта нет необходимости сохранять пиксельные данные размером больше 16000 пикселей, простейшим решением является создание второго линейного измерения для сохранения остальных пиксельных данных (далее, при необходимости, третьего и так далее). Аналогичные технические проблемы присутствуют в других случаях, например, при использовании OpenGL или DirectX.
[07] Не ограничиваясь каким-либо конкретным вариантом, разработчики приняли во внимание техническую проблему, которая проистекает из того факта, что каждая отдельная линейная часть разметки виртуальной памяти может быть записана в физической памяти, например, ячейки разметки виртуальной памяти, хранящие пиксели, которые будут последовательно отрисованы при отрисовке, могут быть размещены непоследовательно в разметке виртуальной памяти. Эта проблема усугубляется, когда компьютеру необходимо совершать действия над пиксельной информацией, связанной с объектом. Например, подобные действия могут потребоваться в том случае, когда компьютер изменяет визуальный параметр объекта. Например, подобное изменение параметра может быть процедурой Mip-текстурирования, которая использует последовательность структур, каждая из которых обладает последовательно снижающимся разрешением (например) объекта.
[08] В соответствии с подходом Mip-текстурирования, когда запрашивается отрисованный объект с более низким разрешением, Mip-текстурирование инициирует модуль WebGL «обрезать» конкретное число пикселей в конкретном порядке (например, каждый третий пиксель объекта) при считывании из разметки виртуальной памяти в порядке уменьшения качества и/или размера и/или разрешения последнего отрисованного изображения (или другого параметра отрисовки). При выполнении подобной обрезки пикселей, модуль WebGL считывает из разметки виртуальной памяти, можно сказать, что WebGL «перепрыгивает» по разным частям памяти (поскольку пиксельные данные расположены не последовательно в рядах разметки виртуальной памяти). Это «перепрыгивание» приводит к меньшей производительности и менее эффективному использованию памяти модуля WebGL (например, видеокарты), а также компьютера в целом.
[09] Настоящее решение нацелено на решение заявленных технических проблем. Варианты осуществления настоящего технического решения описывают способ сохранения в памяти (например, на видеокарте) пиксельных данных компьютерного объекта, пиксельные данные компьютерного объекта превышают 16000 пикселей, поэтому может быть использован по меньшей мере один из: сервисов на основе WebGL, OpenGL или DirectX.
[10] В широком смысле, варианты осуществления настоящего технического решения используют алгоритм пространственного заполнения (Z-код, код Гильберта и аналогичные алгоритмы). Эти алгоритмы широко известны и используются в многомерном пространстве для линейного (одномерного) преобразования. Описанное выше решение описывает процесс организации (преобразования) «линейного» разметки памяти в многомерную память с помощью алгоритмов заполнения пространства, которые, в определенном смысле, применяются в обратную сторону.
[11] Для сглаживания технических эффектов «пиксельного перепрыгивания» по частям линейной памяти в момент считывания пиксельных данных, описанные способы преобразовывают разметку виртуальной памяти в многомерное (или «непрерывное») пространство (в двумерную матрицу объектов памяти). В двухмерной матрице каждые два пикселя, которые отрисовываются последовательно при отрисовке устройством вывода компьютера, также располагаются в последовательных ячейках двухмерной матрицы.
[12] Отдельный технический эффект относится по меньшей мере к некоторым вариантам технического решения, является быстрое считывание из разметки памяти тех частей памяти, которые представляют соседние элементы (т.е. последовательно отрисованные пиксели) исходного объекта (кривой).
[13] Первым объектом настоящего технического решения является способ сохранения информации о пиксельных данных в памяти. Пиксельные данные связаны с графическим объектом, который отображается на устройстве вывода электронного устройства, пиксельные данные отрисовываются в графическом объекте. Способ выполняется электронным устройством. Способ включает в себя: получение доступа к первой части разметки виртуальной памяти для получения пиксельных данных, связанных со множеством пикселей графического объекта, которые хранятся в первой части разметки виртуальной памяти, множество пикселей включает в себя первый пиксель и второй пиксель, первый пиксель и второй пиксель расположены как последовательно-отрисовываемые при отображении графического объекта на устройстве вывода; первая часть разметки виртуальной памяти организована в первом массиве с заранее определенным числом пикселей, которые организованы в одном ряду из множества рядов, которые формируют первый массив, организация множества рядов в первом массиве не учитывается для последовательно-отрисовываемой связи первого пикселя и второго пикселя; идентификацию в первом ряду, окончания первого ряда и начала второго ряда таким образом, что окончание первого ряда включает в себя первый пиксель, а начало второго ряда включает в себя второй пиксель; преобразование первого массива во второй массив, второй массив сохраняется во второй части разметки виртуальной памяти, преобразование включает в себя: реорганизацию первого ряда и второго ряда во втором массиве таким образом, чтобы две ячейки первого ряда и второго ряда включали в себя, соответственно, два последовательно-отрисовываемых пикселя, которые расположены на заранее определенном сдвиге друг от друга, заранее определенный сдвиг представляет собой одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец; две любых ячейки являются любыми двумя ячейками, отличными от начала первого ряда и окончания второго ряда; получение запроса на создание дубликата по меньшей мере части графического объекта, дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра графического объекта, создание дубликата выполняется путем выбора подмножества из множества пикселей, подмножество из множества пикселей включает в себя третий пиксель и четвертый пиксель, которые являются непоследовательно-отрисовываемыми пикселями; идентификацию соответствующих частей второго массива, соответствующие части являются рядами, на которых расположены третий и четвертый пиксели; и изменение идентифицированных соответствующих частей для выполнения выбора подмножества из множества пикселей.
[14] В некоторых вариантах осуществления способ выполняется программным модулем электронного устройства, модуль электронного устройства управляет памятью.
[15] В некоторых вариантах осуществления способа, реорганизация первого ряда и второго ряда включает в себя применение алгоритма на основе заполняющей пространство кривой, алгоритм на основе заполняющей пространство кривой предназначен для определения по меньшей мере одного из порядка записи и считывания множества ячеек в первом ряду.
[16] В некоторых вариантах осуществления способа, алгоритм на основе заполняющей пространство кривой представляет собой одно из: алгоритм Z-кода и алгоритм кривой Гилберта.
[17] В некоторых вариантах осуществления способа, идентификация соответствующих частей второго массива включает в себя считывание рядов массива в порядке считывания, который следует заранее определенному сдвигу.
[18] В некоторых вариантах осуществления способа, изменение идентифицированных соответствующих частей включает в себя выполнение алгоритма изменения графического объекта.
[19] В некоторых вариантах осуществления способа, алгоритм изменения графического объекта представляет собой один из: алгоритм MIP-текстурирования, алгоритм анти-алиасинга, алгоритм анизотропной фильтрации, улучшенное MIP-текстурирование с алгоритмом анизотропной фильтрации и алгоритм пирамидальной обработки изображений.
[20] В некоторых вариантах осуществления способ дополнительно включает в себя отрисовку дубликата на устройстве вывода.
[21] В некоторых вариантах осуществления способа, отрисовка включает в себя выполнение по меньшей мере одного из WebGL, OpenGL и DirectX.
[22] В некоторых вариантах осуществления способа, заранее определенное число пикселей определяется заранее с помощью по меньшей мере одного из WebGL, OpenGL и DirectX.
[23] В некоторых вариантах осуществления способа, первая разметка виртуальной памяти и вторая разметка виртуальной памяти предназначены для управления памятью электронного устройства.
[24] В некоторых вариантах осуществления способа, память представляет собой видеокарту.
[25] В некоторых вариантах осуществления способа, первая разметка виртуальной памяти и вторая разметка виртуальной памяти хранятся в другом устройстве памяти, отдельном от видеокарты.
[26] В некоторых вариантах осуществления способа, реорганизация первого ряда и второго ряда во втором массиве позволяет осуществлять логически-последовательное считывание пиксельных данных без пиксельного «перепрыгивания».
[27] Другим объектом настоящего технического решения является компьютерная система. Компьютерная система включает в себя: процессор; память, соединенную с процессором; устройство вывода, соединенное с процессором; модуль отрисовки, соединенный с процессором, устройством вывода и памятью, модуль отрисовки поддерживает разметку виртуальной памяти; модуль отрисовки выполнен с возможностью получать информацию о пиксельных данных из памяти, пиксельные данные, связанные с графическим объектом, отображаются на устройстве вывода, пиксельные данные предназначены для обработки графического объекта; процессор выполняет один или несколько программных модулей, данный один из одного или нескольких программных модулей выполнен с возможностью осуществлять: получение доступа к первой части разметки виртуальной памяти для получения пиксельных данных, связанных со множеством пикселей графического объекта, которые хранятся в первой части разметки виртуальной памяти, множество пикселей включает в себя первый пиксель и второй пиксель, первый пиксель и второй пиксель расположены как последовательно-отрисовываемые при отображении графического объекта на устройстве вывода; первая часть разметки виртуальной памяти организована в первом массиве с заранее определенным числом пикселей, которые организованы в одном ряду из множества рядов, которые формируют первый массив, организация множества рядов в первом массиве не учитывается для последовательно-отрисовываемой связи первого пикселя и второго пикселя; идентификацию в первом ряду, окончания первого ряда и начала второго ряда таким образом, что окончание первого ряда включает в себя первый пиксель, а начало второго ряда включает в себя второй пиксель; преобразование первого массива во второй массив, второй массив сохраняется во второй части разметки виртуальной памяти, преобразование включает в себя: реорганизацию первого ряда и второго ряда во втором массиве таким образом, чтобы две ячейки первого ряда и второго ряда включали в себя, соответственно, два последовательно-отрисовываемых пикселя, которые расположены на заранее определенном сдвиге друг от друга, заранее определенный сдвиг представляет собой одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец; две любых ячейки являются любыми двумя ячейками, отличными от начала первого ряда и окончания второго ряда; получение запроса на создание дубликата по меньшей мере части графического объекта, дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра графического объекта, создание дубликата выполняется путем выбора подмножества из множества пикселей, подмножество из множества пикселей включает в себя третий пиксель и четвертый пиксель, которые являются непоследовательно-отрисовываемыми пикселями; идентификацию соответствующих частей второго массива, соответствующие части являются рядами, на которых расположены третий и четвертый пиксели; и изменение идентифицированных соответствующих частей для выполнения выбора подмножества из множества пикселей.
[28] В контексте настоящего описания, если четко не указано иное, "электронное устройство", "пользовательское устройство", "сервер", "удаленный сервер" и "компьютерная система" подразумевают под собой аппаратное и/или системное обеспечение, подходящее к решению соответствующей задачи. Таким образом, некоторые неограничивающие примеры аппаратного и/или программного обеспечения включают в себя компьютеры (серверы, настольные компьютеры, ноутбуки, нетбуки и так далее), смартфоны, планшеты, сетевое оборудование (маршрутизаторы, коммутаторы, шлюзы и так далее) и/или их комбинацию.
[29] В контексте настоящего описания, если четко не указано иное, "машиночитаемый носитель" и "память" подразумевает под собой носитель абсолютно любого типа и характера, не ограничивающие примеры включают в себя ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB-ключи, флеш-карты, твердотельные накопители и накопители на магнитной ленте.
[30] В контексте настоящего описания, если четко не указано иное, «указание» информационного элемента может представлять собой сам информационный элемент или указатель, отсылку, ссылку или другой косвенный способ, позволяющий получателю указания найти сеть, память, базу данных или другой машиночитаемый носитель, из которого может быть извлечен информационный элемент. Например, указание на файл может включать в себя сам файл (т.е. его содержимое), или же оно может являться уникальным дескриптором файла, идентифицирующим файл по отношению к конкретной файловой системе, или каким-то другими средствами передавать получателю указание на сетевую папку, адрес памяти, таблицу в базе данных или другое место, в котором можно получить доступ к файлу. Как будет понятно специалистам в данной области техники, степень точности, необходимая для такого указания, зависит от степени первичного понимания того, как должна быть интерпретирована информация, которой обмениваются получатель и отправитель указателя. Например, если до установления связи между отправителем и получателем понятно, что признак информационного элемента принимает вид ключа базы данных для записи в конкретной таблице заранее установленной базы данных, содержащей информационный элемент, то передача ключа базы данных - это все, что необходимо для эффективной передачи информационного элемента получателю, несмотря на то, что сам по себе информационный элемент не передавался между отправителем и получателем указания.
[31] В контексте настоящего описания, если конкретно не указано иное, слова «первый», «второй», «третий» и т.д. используются в виде прилагательных исключительно для того, чтобы отличать существительные, к которым они относятся, друг от друга, а не для целей описания какой-либо конкретной взаимосвязи между этими существительными. Так, например, следует иметь в виду, что использование терминов «первый сервер» и «третий сервер» не подразумевает какого-либо порядка, отнесения к определенному типу, хронологии, иерархии или ранжирования (например) серверов/между серверами, равно как и их использование (само по себе) не предполагает, что некий "второй сервер" обязательно должен существовать в той или иной ситуации. В дальнейшем, как указано здесь в других контекстах, упоминание «первого» элемента и «второго» элемента не исключает возможности того, что это один и тот же фактический реальный элемент. Так, например, в некоторых случаях, «первый» сервер и «второй» сервер могут являться одним и тем же программным и/или аппаратным обеспечением, а в других случаях они могут являться разным программным и/или аппаратным обеспечением.
[32] Каждый вариант осуществления настоящего технического решения преследует по меньшей мере одну из вышеупомянутых целей и/или объектов. Следует иметь в виду, что некоторые объекты данной технического решения, полученные в результате попыток достичь вышеупомянутой цели могут удовлетворять и другим целям, отдельно не указанным здесь.
[33] Дополнительные и/или альтернативные характеристики, аспекты и преимущества вариантов осуществления настоящего технического решения станут очевидными из последующего описания, прилагаемых чертежей и прилагаемой формулы изобретения.
Краткое описание чертежей
[34] Для лучшего понимания настоящего технического решения, а также других его аспектов и характерных черт сделана ссылка на следующее описание, которое должно использоваться в сочетании с прилагаемыми чертежами, где:
[35] На Фиг. 1 представлена диаграмма компьютерной системы, которая подходит для реализации вариантов настоящего технического решения, и/или которая используется в сочетании с вариантами осуществления настоящего технического решения.
[36] На Фиг. 2 представлена принципиальная схема разметки виртуальной памяти, которая поддерживается компьютерной системой, показанной на Фиг. 1, разметка виртуальной памяти реализована в соответствии с первым неограничивающим вариантом осуществления настоящего технического решения.
[37] На Фиг. 3 представлена принципиальная схема разметки виртуальной памяти, которая поддерживается компьютерной системой, показанной на Фиг. 1, разметка виртуальной памяти реализована в соответствии со вторым неограничивающим вариантом осуществления настоящего технического решения.
[38] На Фиг. 4 представлена принципиальная схема разметки виртуальной памяти, которая поддерживается компьютерной системой, показанной на Фиг. 1, разметка виртуальной памяти реализована в соответствии с третьим неограничивающим вариантом осуществления настоящего технического решения.
[39] На Фиг. 5 представлена блок-схема способа сохранения в памяти пиксельных данных, связанных с графическим объектом, который будет отрисован, способ выполняется компьютером из компьютерной системы, показанной на Фиг. 1, способ исполняется в соответствии с неограничивающими вариантами осуществления настоящего технического решения.
[40] На Фиг. 6 представлена блок-схема способа сохранения пиксельных данных, способ выполняется компьютерной системой, показанной на Фиг. 1.
[41] На Фиг 7 представлена принципиальная схема графического объекта, который может быть отрисован на устройстве вывода компьютерной системы, показанной на Фиг. 1.
[42] Также следует отметить, что чертежи выполнены не в масштабе, если не специально указано иное.
Осуществление
[43] Все примеры и используемые здесь условные конструкции предназначены, главным образом, для того, чтобы помочь читателю понять принципы настоящего технического решения, а не для установления границ его объема. Следует также отметить, что специалисты в данной области техники могут разработать различные схемы, отдельно не описанные и не показанные здесь, но которые, тем не менее, воплощают собой принципы настоящего технического решения и находятся в границах его объема.
[44] Кроме того, для ясности в понимании, следующее описание касается достаточно упрощенных вариантов осуществления настоящего технического решения. Как будет понятно специалисту в данной области техники, многие варианты осуществления настоящего технического решения будут обладать гораздо большей сложностью.
[45] Некоторые полезные примеры модификаций настоящего технического решения также могут быть охвачены нижеследующим описанием. Целью этого является также исключительно помощь в понимании, а не определение объема и границ настоящего технического решения. Эти модификации не представляют собой исчерпывающего списка, и специалисты в данной области техники могут создавать другие модификации, остающиеся в границах объема настоящего технического решения. Кроме того, те случаи, где не были представлены примеры модификаций, не должны интерпретироваться как то, что никакие модификации невозможны, и/или что то, что было описано, является единственным вариантом осуществления этого элемента настоящего технического решения.
[46] Более того, все заявленные здесь принципы, аспекты и варианты осуществления настоящего технического решения, равно как и конкретные их примеры, предназначены для обозначения их структурных и функциональных основ. Таким образом, например, специалистами в данной области техники будет очевидно, что представленные здесь блок-схемы представляют собой концептуальные иллюстративные схемы, отражающие принципы настоящего технического решения. Аналогично, любые блок-схемы, диаграммы, псевдокоды и т.п. представляют собой различные процессы, которые могут быть представлены на машиночитаемом носителе и, таким образом, использоваться компьютером или процессором, вне зависимости от того, показан явно подобный компьютер или процессор, или нет.
[47] Функции различных элементов, показанных на фигурах, включая функциональный блок, обозначенный как «процессор» или «графический процессор», могут быть обеспечены с помощью специализированного аппаратного обеспечения или же аппаратного обеспечения, способного использовать подходящее программное обеспечение. Когда речь идет о процессоре, функции могут обеспечиваться одним специализированным процессором, одним общим процессором или множеством индивидуальных процессоров, причем некоторые из них могут являться общими. В некоторых вариантах осуществления настоящего технического решения процессор может являться универсальным процессором, например, центральным процессором (CPU) или специализированным для конкретной цели процессором, например, графическим процессором (GPU). Более того, использование термина "процессор" или "контроллер" не должно подразумевать исключительно аппаратное обеспечение, способное поддерживать работу программного обеспечения, и может включать в себя, без установления ограничений, цифровой сигнальный процессор (DSP), сетевой процессор, интегральная схема специального назначения (ASIC), программируемую пользователем вентильную матрицу (FPGA), постоянное запоминающее устройство (ПЗУ) для хранения программного обеспечения, оперативное запоминающее устройство (ОЗУ) и энергонезависимое запоминающее устройство. Также может быть включено другое аппаратное обеспечение, обычное и/или специальное.
[48] На Фиг. 1 представлена схема системы 100, реализованной в соответствии с неограничивающими вариантами осуществления настоящего технического решения. Физическое осуществление компьютерной системы 100 никак конкретно не ограничено. Компьютерная система 100 может, например, в качестве не ограничивающего примера, представлять собой настольный компьютер, ноутбук, смартфон (например, Apple iPhone™ or a Samsung Galaxy S5™), персональный цифровой помощник (PDA) или другое устройство, включающее в себя функциональность вычисления и возможности передачи данных. Альтернативно, компьютерная система 100 может быть реализована как сервер или другой сетевой компонент.
[49] Компьютерная система 100 (которая также может упоминаться здесь периодически как «компьютер 100», «электронное устройство 100», «устройство 100 обработки») может содержать среди прочего внутренние аппаратные компоненты, включая один или несколько мультиядерных процессоров, которые коллективно упоминаются здесь как процессор 102. С процессором 102 соединена (например, через USB) память 106 (например, ОЗУ). Память 106 может охватывать один или несколько носителей и в целом предоставлять место для хранения компьютерного кода (например, программного и/или аппаратного обеспечения) и данных. В качестве примера, память 106 может включать разнообразные материальные машиночитаемые носители, включая постоянное запоминающее устройство ПЗУ (ROM) и/или оперативное запоминающее устройство ОЗУ (RAM). Как широко известно в данной области техники, ПЗУ передает данные и команды однонаправленно процессору 102, а ОЗУ обычно используется для передачи данных и команд двунаправленно.
[50] Память 106 может также включать одно или несколько стационарных запоминающих устройств, в виде, среди прочих подходящих форм памяти, например, жестких дисков (HDD), твердотельных накопителей (SSD), карт флэш-памяти (например, безопасные цифровые карты или SD-карты, встроенные мультимедийные карты или еММС карты), соединенных двунаправленно с процессором 102. Информация может также располагаться на одном или нескольких съемных носителях, загруженных или установленных в компьютерную систему 100, когда это необходимо.
[51] Память 106 может хранить среди прочего серию машиночитаемых инструкций, выполнение которых позволяет процессору 102 выполнять различные операции, описанные здесь.
[52] Несмотря на то, что память 106 представлена в качестве единого физического блока, это не является необходимым в каждом варианте осуществления настоящего технического решения. Таким образом, память 106 может быть реализована в виде нескольких отдельных частей памяти. Эти отдельные части могут быть реализованы как отдельные физические устройства, которые необязательно являются одинаковыми. Тем не менее, части памяти могут быть реализованы как часть единого физического устройства, которое разделено на виртуальные/логические части.
[53] Процессор 102 также соединен с устройством 112 вывода (которое также упоминается здесь иногда как «устройство ввода-вывода»). В общем случае, устройство 112 вывода выполнено с возможностью предоставлять визуальную информацию пользователю (не показан) компьютерной системы 100. Устройство 112 вывода может быть реализовано как экран или монитор. Устройство 112 вывода может включать в себя одно или несколько устройств ввода и устройств вывода. Например, устройство 112 вывода может представлять собой жидкокристаллический дисплей (LCD), светодиодный дисплей (LED), дисплей на основе интерферометрической модуляции (IMOD) или дисплей на основе любой другой подходящей технологии. В некоторых вариантах осуществления настоящего технического решения, устройство 112 вывода может быть многофункциональным модулем, например, сенсорным экраном, который выполняет функцию как устройства вывода (для предоставления пользователю информации), так и устройства ввода (для получения команд от пользователя).
[54] Другими словами, устройство 112 вывода в общем случае выполнено с возможностью отображать графический интерфейс пользователя (GUI), который предоставляет простой в использовании графический интерфейс между пользователем компьютерной системы 100 и операционной системой или приложением(ями), установленном на компьютерной системе 100. В общем случае графический интерфейс пользователя (GUI) представляет программы, файлы и операционные опции с помощью графических изображений. В время проведения операции пользователь может выбрать и активировать разнообразные графические изображения, отображенные на дисплее, для инициации функций и задач, связанных с ними.
[55] Также с процессором 102 соединен модуль 104 отрисовки. В некоторых вариантах осуществления настоящего технического решения, модуль 104 отрисовки реализован как аппаратный модуль, способный отрисовывать графику для представления на устройстве 112 вывода. В некоторых вариантах осуществления настоящего технического решения, модуль 104 отрисовки реализован в соответствии со стандартом WebGL.
[56] Несмотря на то что в представленном варианте осуществления технического решения, модуль 104 отрисовки представлен как аппаратный модуль, это не является обязательным в каждом варианте осуществления настоящего технического решения. Например, в альтернативных вариантах осуществления настоящего технического решения, модуль 104 отрисовки может быть реализован как аппаратный модуль, соединенный с аппаратным модулем видеокарты (модулем видеочипсета), например, nVIDIA GeForce™ 970. В другом варианте осуществления настоящего технического решения, модуль отрисовки может быть реализован как программный модуль, соединенный с модулем видеочипсета видеокарты.
[57] В еще одном варианте осуществления настоящего технического решения, модуль 104 отрисовки может быть выполнен как часть программного модуля, например, как веб-браузер (например, Mozilla Firefox™, Yandex Browser™ и так далее). В конкретном варианте осуществления настоящего технического решения, где модуль 104 отрисовки реализован как часть веб-браузера, модуль 104 отрисовки может также отрисовывать веб-страницы, веб-графику, например, он-лайн видео фрагменты, изображения, анимацию, стили CSS, HTML и так далее.
[58] В общем случае, модуль 104 отрисовки выполнен с возможностью (i) получать пиксельные данные, связанные с графическим объектом, пиксельные данные могут храниться в памяти 106 и (ii) обрабатывать пиксельные данные для отрисовки и отображения на устройстве 112 вывода. Природа графического объекта никак конкретно не ограничена. Например, графический объект может представлять собой изображение, часть карты, часть видеоролика, часть трехмерной игры и так далее. Следует отметить, что модуль 104 отрисовки выполнен с возможностью обрабатывать графический объект, который будет отображен в различных разрешениях, с разным уровнем детализации, с различными неотображаемыми данными (например, метаданными) или с любым другим изменяющимся параметром отрисовки графического объекта.
[59] В компьютерной системе 100 также предусмотрена разметка 108 виртуальной памяти. Разметка 108 виртуальной памяти поддерживается модулем 104 отрисовки и/или процессором 102. В общем случае, функция разметки 108 виртуальной памяти заключается в предоставлении разметки части памяти (например, адрес или указатель другого типа) в памяти 106, где хранятся пиксельные данные, связанные с конкретным пикселем графического объекта, который будет отрисован модулем 104 отрисовки.
[60] То, как именно организовано и поддерживается разметка 108 виртуальной памяти, будет более подробно описано далее.
[61] Процессор 102 выполнен с возможностью выполнять один или несколько программных модулей 110. Один или несколько программных модулей 110 может выполнять различные процедуры и управлять различными компонентами компьютерной системы 100. Данный из одного или нескольких программных модулей 110 может выполнять процедуру управления модулем отрисовки. Как часть процедуры управления модулем отрисовки, данный один из одного или нескольких программных модулей 110 выполнен с возможностью осуществлять: (i) управление разметкой 108 виртуальной памяти, (ii) получение доступа и получение данных (например, пиксельных данных из памяти 106), (iii) получение доступа, получение и реорганизацию данных, хранящихся в разметке 108 виртуальной памяти.
[62] Конкретнее, в соответствии с вариантами осуществления настоящего технического решения, данный один из одного или нескольких программных модулей 110 выполнен с возможностью осуществлять способ сохранения пиксельных данных в памяти 106 путем реорганизации разметки 108 виртуальной памяти.
[63] В первую очередь, данный один из одного или нескольких программных модулей 110 выполнен с возможностью получать доступ к первой части разметки 108 виртуальной памяти для получения пиксельных данных, которые связаны со множеством пикселей графического объекта, хранящегося в первой части разметки 108 виртуальной памяти. Для целей описания, которое будет представлено ниже, следует предположить, что первая часть разметки 108 виртуальной памяти организована в соответствии с известным уровнем техники, например, описанным в патенте US 6924811. На Фиг. 2 представлена часть Фиг. 15, на которой показан вариант осуществления технического решения из патента US 6924811. На Фиг 2 представлена организация разметки 108 виртуальной памяти до выполнения способа, реализованного в соответствии с вариантами осуществления настоящего технического решения.
[64] Множество пикселей, которые формируют графический объект, включает в себя первый пиксель и второй пиксель, первый пиксель и второй пиксель являются последовательно-отрисовываемыми при отображении графического объекта на устройстве 112 вывода. На Фиг. 7 представлен вариант графического объекта 702, который может отображаться на устройстве 112 вывода. На Фиг. 7 показаны (в увеличенном виде) первый пиксель 704, второй пиксель 706, третий пиксель 708 и четвертый пиксель 710. Первый пиксель 704, второй пиксель 706, третий пиксель 708 и четвертый пиксель 710 в представленном порядке являются последовательно-отрисовываемыми. С другой стороны, первый пиксель 704 и четвертый пиксель 710 являются непоследовательно-отрисовываемыми, поскольку между ними находится ряд промежуточных пикселей (второй пиксель 706 и третий пиксель 708). Последнее также применяется, например, ко второму пикселю 706 и четвертому пикселю; а также к первому пикселю 702 и третьему пикселю 708, и так далее.
[65] На Фиг. 2 разметка 108 виртуальной памяти организована в первом массиве 202 с заранее определенным числом пикселей 704, 706, 708, 710 (в представленном варианте, заранее определенное число пикселей 704, 706, 708, 710 - четыре), которые организованы в один ряд 204, 206 из множества рядов 207, которые формируют первый массив 202, каждый пиксель 704, 706, 708, 710 сохраняется в соответствующей ячейке 203. Как будет описано ниже, организация множества рядов 207 в первом массиве 202 не учитывается для последовательно-отрисовываемых связей первого пикселя 704, 706, 708, 710 и второго пикселя 704, 706, 708, 710.
[66] В соответствии с различными вариантами осуществления настоящего технического решения, при отрисовке графического объекта на устройстве 112 вывода, отрисованный графический объект состоит из множества пикселей 704, 706, 708, 710. Некоторые из множества пикселей 704,706,708,710 являются видимыми на устройстве 112 вывода. Любые два из видимых пикселей 704, 706, 708, 710 могут быть последовательно-видимыми при отрисовке на устройстве 112 вывода. Другие из множества пикселей 704, 706, 708, 710 являются невидимыми на устройстве 112 вывода. Последние могут упоминаться как пиксели 704, 706, 708, 710 метаданных (например, невидимые пиксели, которые обеспечивают ссылки и так далее). Сочетание любых двух из этих пикселей 704, 706, 708, 710 (видимых или невидимых) может быть последовательно-отрисовываемым на устройстве 112 вывода - т.е. организованным один за другим, в упорядоченной последовательности.
[67] Четвертая ячейка 208 первого ряда 204 (которая также является последней ячейкой первого ряда 204) содержит четвертый пиксель 704, 706, 708, 710 («3») и первая ячейка 210 второго ряда 206 (которая также является первой ячейкой второго ряда 206) содержит пятый пиксель 704, 706, 708, 710 («4»). Предположим, что четвертый пиксель 704, 706, 708, 710 и пятый пиксель 704, 706, 708, 710 являются последовательно-отрисовываемыми - т.е. следуют один за другим при отрисовке графического объекта. Как можно видеть на Фиг. 2, организация первого ряда 204 и второго ряда 206 не учитывает эту последовательно-отрисовываемую связь. Конкретнее, под номером 240 представлен порядок ячеек 203 в первом массиве 202. Представленный порядок 240 может быть порядком заполнения и/или считывания ячеек 203 в первом массиве 202. При перемещении четвертой ячейки 208 к первой ячейке 210, порядок 240 «перепрыгивает» - т.е. порядок смещается на сдвиг превышающий один ряд и один столбец.
[68] Следовательно, данный один из одного или нескольких программных модулей 110 выполнен с возможностью идентифицировать, в первом массиве 202, окончание первого ряда 204 и начало второго ряда 206 таким образом, чтобы окончание первого ряда 204 содержало первый пиксель 704, 706, 708, 710 и начало второго ряда 206 содержало второй пиксель 704, 706, 708, 710 - таким образом, первый пиксель 704, 706, 708, 710 и второй пиксель 704, 706, 708, 710 являются последовательно-отрисовываемыми при отображении графического объекта 702 на устройстве 112 вывода.
[69] На Фиг. 3, 4 и 5 данный один из одного или нескольких модулей 110 выполнен с возможностью преобразовывать первый массив 202 во второй массив 302, 402, 502, второй массив 302, 402, 502 сохраняется во второй части разметки 108 виртуальной памяти. В соответствии с вариантами осуществления настоящего технического решения, преобразование включает в себя: реорганизацию первого ряда 304, 404, 504 и второго ряда 306, 406, 506 во втором массиве 302, 402, 502 таким образом, чтобы две ячейки 303, 403, 503 первого ряда 304, 404, 504 и второго ряда 306, 406, 506, которые содержат, соответственно, два последовательно-отрисовываемых 704, 706, 708, 710 (любые две ячейки 303, 403, 503 являются любыми двумя 303, 403, 503, отличными от начала первого ряда 304, 404, 504 и окончания второго ряда 306, 406, 506), были расположены на заранее определенном сдвиге друг от друга. В соответствии вариантами осуществления настоящего технического решения, заранее определенный сдвиг представляет собой по меньшей мере одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец.
[70] В различных вариантах осуществления настоящего технического решения, данный один или несколько программных модулей 110 выполняет реорганизацию первого ряда 304, 404, 504 и второго ряда 304, 404, 504, включая применение алгоритма на основе заполняющей пространство кривой. В различных вариантах осуществления настоящего технического решения, алгоритм на основе заполняющей пространство кривой определяет по меньшей мере один из: порядок записи и порядок считывания множества ячеек 303, 403, 503 во втором массиве 302, 402, 502. Алгоритм на основе заполняющей пространство кривой может представлять собой один из: алгоритм Z-кода и алгоритм кривой Гилберта.
[71] Конкретнее, на Фиг. 3 под номером 340 представлен порядок ячеек 303 во втором массиве 302. Представленный порядок 340 может быть порядком заполнения и/или считывания ячеек 203 в первом массиве 302. На Фиг. 3 видно, что любые две ячейки 303 (отличные от ячейки 303, которая показана как «0» (т.е. первая ячейка), и ячейки 303, которая показана как «15» (т.е. последняя ячейка)) содержат, соответственно, два последовательно-отрисовываемых пикселя 704, 706, 708, 710 находятся на заранее определенном сдвиге друг от друга (заранее определенный сдвиг представляет собой по меньшей мере одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец. В некотором смысле, порядок 340 «перемещается зигзагом» по множеству ячеек 303, создавая непрерывный путь заполнения/считывания между первой ячейкой и последней ячейкой второго массива 302. В некотором смысле, путь порядка 340 формируется из непрерывных «вертикально» упорядоченных (если смотреть слева направо с учетом ориентации, представленной на Фиг. 3) частей, которые напоминают латинскую букву «Z».
[72] На Фиг. 4 под номером 440 представлен порядок ячеек 403 во втором массиве 402. Представленный порядок 440 может быть порядком заполнения и/или считывания ячеек 403 во втором массиве 402. На Фиг. 4 видно, что любые две ячейки 403 (отличные от ячейки 403, которая показана как «0» (т.е. первая ячейка), и ячейки 403, которая показана как «19» (т.е. последняя ячейка)) содержат, соответственно, два последовательно-отрисовываемых пикселя 704, 706, 708, 710 находятся на заранее определенном сдвиге друг от друга (заранее определенный сдвиг представляет собой по меньшей мере одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец. В некотором смысле, порядок 440 «перемещается зигзагом» по множеству ячеек 403, создавая непрерывный путь заполнения/считывания между первой ячейкой и последней ячейкой второго массива 402. В некотором смысле, путь порядка 340 формируется из непрерывных «горизонтально» упорядоченных (если смотреть слева направо с учетом ориентации, представленной на Фиг. 4) частей, которые напоминают латинскую букву «Z».
[73] Следует отметить, что показанное на Фиг. 3 и на Фиг. 4, является примерами пользовательского «Z-кода», как алгоритма заполнения пространства для определения порядка 340, 440. Тем не менее, следует иметь в виду, что конкретный вариант осуществления порядка 340, 440 никак конкретно не ограничивается. Важно также иметь в виду, что конкретное число ячеек 303, 403 не ограничивается количеством, представленным на Фиг. 3 и Фиг. 4. Также следует иметь в виду, что число рядов 304, 306, 404, 406 не ограничивается двумя, представленными на Фиг. 3 и Фиг. 4.
[74] Таким образом, на Фиг. 5 представлен другой вариант осуществления настоящего технического решения. Под номером 540 представлен порядок ячеек 503 во втором массиве 502. Представленный порядок 540 может быть порядком заполнения и/или считывания ячеек 503 во втором массиве 502. На Фиг. 5 видно, что любые две ячейки 503 (отличные от ячейки 503, которая показана как «0» (т.е. первая ячейка), и ячейка 503, которая показана как «19» (т.е. последняя ячейка)) содержат, соответственно, два последовательно-отрисовываемых пикселя 704, 706, 708, 710 находятся на заранее определенном сдвиге друг от друга (заранее определенный сдвиг представляет собой по меньшей мере одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец. В некотором смысле, порядок 540 непрерывно пролегает по множеству ячеек 503, создавая непрерывный путь заполнения/считывания между первой ячейкой 503 и последней ячейкой 503 второго массива 502. В представленном на Фиг. 5 варианте осуществления технического решения (в отличие от вариантов осуществления, показанных на Фиг. 3 и Фиг. 4) путь порядка 540 не сформирован с помощью повторяющегося узора.
[75] Данный один из одного или нескольких программных модулей 110 дополнительно выполнен с возможностью получать запрос на создание дубликата по меньшей мере части графического объекта 702, дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра отрисовки графического объекта 702. Природа этого изменяющегося по меньшей мере одного параметра отрисовки никак конкретно не ограничивается. Например, по меньшей мере один параметр отрисовки может быть визуально заметным параметром, например, без установления ограничений, разрешением изображения, уровнем детализации, цветовой схемой и так далее. По меньшей мере один параметр отрисовки также может представлять собой метаданные, связанные с данным пикселем 704, 706, 708, 710 графического объекта 702. В вариантах осуществления настоящего технического решения, создание дубликата может выполняться путем выбора подмножества из множества пикселей 704,706, 708, 710, подмножество из множества пикселей 704, 706, 708, 710 включает в себя два пикселя 704, 706, 708, 710, которые являются непоследовательно-отрисовываемыми пикселями 704, 706, 708, 710.
[76] Данный один из одного или нескольких программных модулей 110 дополнительно выполнен с возможностью идентифицировать соответствующие части второго массива 302, 402, 502, который содержит ряды, содержащие пиксели 704, 706, 708, 710 из подмножества (которое, в свою очередь, включает в себя непоследовательно-отрисовываемые пиксели 704, 706, 708, 710). Один или несколько программных модулей 110 дополнительно выполнены с возможностью изменять идентифицированные соответствующие части для выполнения процесса выбора подмножества из множества пикселей 704, 706, 708, 710. В некоторых вариантах осуществления настоящего технического решения, данный один из одного или нескольких программных модулей 110 дополнительно выполнен с возможностью сохранять таким образом выбранное подмножество пикселей в памяти 106. Дополнительно, данный один из одного или нескольких программных модулей 110 выполнен с возможностью инициировать модуль 104 обработки отрисовывать подмножество пикселей 704, 706, 708, 710 на устройстве 112 вывода (таким образом отображая измененный дубликат графического объекта 702).
[77] Конкретный технический эффект, который относится по меньшей мере к некоторым вариантам осуществления настоящего технического решения, также может относится к реорганизации первого массива 202 во второй массив 302, 402, 502, который включает в себя, среди прочего, возможность считывать последовательные ячейки 303, 403, 503 (т.е. те ячейки 303, 403, 503, который содержат последовательно-отрисовываемые пиксели 704, 706, 708, 710 графического объекта 702) без «перепрыгивания».
[78] Описанная выше архитектура способна выполнять способ сохранения информации о пиксельных данных в памяти 106. На Фиг. 6 представлена блок-схема способа 600, реализованного в соответствии с вариантами осуществления настоящего технического решения, не ограничивающими его объем. Следует вспомнить, что пиксельные данные связаны с графическим объектом 702, который отображается на устройстве 112 вывода компьютерной системы 100, пиксельные данные предназначены для отрисовки в графическом объекте 702. Способ 600 может выполняться компьютерной системой 100.
[79] 602 - получение доступа к первой части разметки виртуальной памяти для получения пиксельных данных, связанных со множеством пикселей графического объекта, которые хранятся в первой части разметки виртуальной памяти, множество пикселей включает в себя первый пиксель и второй пиксель, первый пиксель и второй пиксель расположены как последовательно-отрисовываемые при отображении графического объекта на устройстве вывода; первая часть разметки виртуальной памяти организована в первом массиве с заранее определенным числом пикселей, которые организованы в одном ряду из множества рядов, которые формируют первый массив, организация множества рядов в первом массиве не учитывается для последовательно-отрисовываемой связи первого пикселя и второго пикселя
[80] Способ 600 начинается на этапе 602, где компьютерная система 100 получает доступ к части разметки 108 виртуальной памяти для получения пиксельных данных, связанных с множеством пикселей 704, 706, 708, 710 графического объекта 702, хранящегося в первой части разметки 108 виртуальной памяти.
[81] Множество пикселей 704, 706, 708, 710 включает в себя первый пиксель 704, 706, 708, 710 и второй пиксель 704, 706, 708, 710. Первый пиксель 704, 706, 708, 710 и второй пиксель 704, 706, 708, 710 располагаются последовательно-отрисовываемо при отображении графического объекта 702 на устройстве 112 вывода. Первая часть разметки 108 виртуальной памяти организована в первый массив 202 с заранее определенным числом пикселей 704, 706, 708, 710, которые организованы в один ряд 204, 206 из множества рядов 204, 206, которые формируют первый массив 202, организация множества рядов 204, 206 в первом массиве 202 не учитывается для последовательно-отрисовываемой связи первого пикселя 704, 706, 708, 710 и второго пикселя 704, 706, 708, 710.
[82] 604 - идентификация в первом ряду, окончания первого ряда и начала второго ряда таким образом, что окончание первого ряда включает в себя первый пиксель, а начало второго ряда включает в себя второй пиксель
[83] Способ 600 далее переходит к этапу 604, где компьютерная система 100 идентифицирует, в первом массиве 202, окончание первого ряда 204 и начало второго ряда 206, таким образом, что окончание первого рядя 204 содержит первый пиксель 704, 706, 708, 710, а начало второго ряда 206 содержит второй пиксель 704, 706, 708, 710.
[84] 606 - преобразование первого массива во второй массив, второй массив сохраняется во второй части разметки виртуальной памяти, преобразование включает в себя: реорганизацию первого ряда и второго ряда во втором массиве таким образом, чтобы две ячейки первого ряда и второго ряда включали в себя, соответственно, два последовательно-отрисовываемых пикселя, которые расположены на заранее определенном сдвиге друг от друга, заранее определенный сдвиг представляет собой одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец; две любых ячейки являются любыми двумя ячейками, отличными от начала первого ряда и окончания второго ряда
[85] Способ 600 далее переходит к этапу 606, где компьютерная система 100 преобразовывает первый массив 202 во второй массив 302, 402, 502, второй массив 302, 402, 502 сохраняется во второй части разметки 108 виртуальной памяти. Этап 606 включает в себя: реорганизацию первого ряда 204 и второго ряда 206 во втором массиве 302, 402, 502 таким образом, чтобы две ячейки 303, 403, 503 (отличные от начала первого ряда 204 и окончания второго ряда 206) первого ряда 204 и второго ряда 206 включали в себя, соответственно, два последовательно-отрисовываемых пикселя 704, 706, 708, 710, которые расположены на заранее определенном сдвиге друг от друга. В вариантах осуществления способа 600, заранее определенный сдвиг представляет собой по меньшей мере одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец.
[86] В некоторых вариантах осуществления способа 600, этап реорганизации первого ряда 204 и второго ряда 206 включает в себя применение алгоритма на основе заполняющей пространство кривой, алгоритм на основе заполняющей пространство кривой предназначен для определения по меньшей мере одного из порядка записи и считывания множества ячеек 303, 403, 503 во втором массиве 302, 402, 502. В некоторых вариантах осуществления способа 600, алгоритм на основе заполняющей пространство кривой представляет собой одно из: алгоритм Z-кода и алгоритм кривой Гилберта. В некоторых вариантах осуществления технического решения, применение алгоритма на основе заполняющей пространство кривой выполняется реверсивно по отношению к тому, как должен работать алгоритм на основе заполняющей пространство кривой.
[87] 608 - получение запроса на создание дубликата по меньшей мере части графического объекта, дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра графического объекта, создание дубликата выполняется путем выбора подмножества из множества пикселей, подмножество из множества пикселей включает в себя третий пиксель и четвертый пиксель, которые являются непоследовательно-отрисовываемыми пикселями
[88] Способ 600 далее переходит к этапу 608, где компьютерная система 100 получает запрос на создание дубликата по меньшей мере части графического объекта 702. Дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра отрисовки графического объекта 702. Создание дубликата выполняется путем выбора подмножества из множества пикселей 704, 706, 708, 710, подмножество из множества пикселей 704, 706, 708, 710 включает в себя третий пиксель 704, 706, 708, 710 и четвертый пиксель 704, 706, 708, 710, которые являются непоследовательно-отрисовываемыми пикселями 704, 706, 708, 710.
[89] 610 - идентификация соответствующих частей второго массива, соответствующие части являются рядами, на которых расположены третий и четвертый пиксели
[90] Способ 600 далее переходит к этапу 610, где компьютерная система 100 идентифицирует соответствующие части второго массива 302, 402, 502, соответствующие части являются рядами, в которых содержится третий пиксель 704, 706, 708, 710 и четвертый пиксель 704, 706, 708, 710.
[91] В некоторых вариантах осуществления способа 600, этап идентификации соответствующих частей второго массива 302, 402, 502 включает в себя считывание рядов второго массива 302, 402, 502 в порядке 340, 440, 540 считывания, который следует заранее определенному сдвигу.
[92] 612 - изменение идентифицированных соответствующих частей для выполнения выбора подмножества из множества пикселей
[93] Способ 600 далее переходит к этапу 612, где компьютерная система 100 изменяет идентифицированные соответствующие части для выполнения выбора подмножества из множества пикселей 704, 706, 708, 710.
[94] В некоторых вариантах осуществления способа 600, этап изменения идентифицированных соответствующих частей включает в себя выполнение алгоритма изменения графического объекта. В некоторых вариантах осуществления способа 600, алгоритм изменения графического объекта включает в себя алгоритм Mip-текстурирования. Альтернативно, алгоритм изменения графического объекта может включать в себя другие типы алгоритмов, например, без установления ограничений: анти-алиасинг, анизотропную фильтрацию, улучшенное Mip-текстурирование с анизоторпной фильтрацией, пирамидальную обработку изображений и так далее.
[95] В широком смысле, любой алгоритм или способ, обеспечивающий масштабирование изображения или разметку, может быть использован здесь. Кроме того, следует отметить, что то, как именно инициируется алгоритм изменения графического объекта, никак конкретно не ограничивается. Например, алгоритм изменения графического объекта может быть инициирован с помощью системы веб-отрисовки (например, системы отрисовки веб-браузера); алгоритм изменения графического объекта может быть инициирован приложениями моделирования компьютерной графики, например, Adobe Photoshop™ и Autodesk 3ds Max™.
[96] Возможен вариант осуществления способа 600, который дополнительно включает в себя отрисовку дубликата на устройстве 112 вывода. В некоторых вариантах осуществления способа 600, этап отрисовки включает в себя выполнение библиотеки визуализации графики (например, WebGL или OpenGL или DirectX). В этих вариантах осуществления технического решения, заранее определенное число пикселей, которое используется для определения подмножества пикселей, которое будет выбрано на этапе создания дубликата, определяется заранее с помощью WebGL.
[97] Затем способ 600 завершается.
[98] В некоторых вариантах осуществления способа 600, способ 600 выполняется программным модулем (т.е. данным одним из одного или нескольких программных модулей 110 для управления памятью 106) компьютерной системы 100.
[99] В некоторых вариантах осуществления способа 600, первая разметка 108 виртуальной памяти и вторая разметка 108 виртуальной памяти предназначены для управления памятью 106 компьютерной системы 100. Память 106 может представлять собой видеокарту. В этих вариантах осуществления способа, первая разметка 108 виртуальной памяти и вторая разметка 108 виртуальной памяти хранятся в другом устройстве памяти (не показано), отдельном от видеокарты.
[100] В некоторых вариантах осуществления способа 600, этап реорганизации первого ряда 204 и второго ряда 206 во втором массиве 302, 402, 502 обеспечивает логически-последовательное считывание пиксельных данных без пиксельного «перепрыгивания».
[101] Соответственно, варианты осуществления настоящего технического решения можно изложить следующим образом, в виде пронумерованных пунктов:
[102] ПУНКТ 1 Способ (600) сохранения в памяти (106) пиксельных данных, связанных с графическим объектом (702), отображаемым на устройстве (112) вывода электронного устройства (100), пиксельные данные предназначены для отрисовки графического объекта (702), способ (600) выполняется электронным устройством (100), способ (600) включает в себя:
[103] получение (602) доступа к первой части разметки (108) виртуальной памяти для получения пиксельных данных, связанных с множеством пикселей (704, 706, 708, 710) графического объекта (702), хранящегося в первой части разметки (108) виртуальной памяти,
[104] множество пикселей (704, 706, 708, 710) включает в себя первый пиксель (704, 706, 708, 710) и второй пиксель (704, 706, 708, 710), первый пиксель (704, 706, 708, 710) и второй пиксель (704, 706, 708, 710) расположены последовательно-отрисовываемо при отображении графического объекта (702) на устройстве (112) вывода;
[105] первая часть разметки (108) виртуальной памяти организована в первый массив (202) с заранее определенным числом пикселей (704, 706, 708, 710), которые организованы в один ряд (204, 206) из множества рядов (207), которые формируют первый массив (202), организация множества рядов (207) в первом массиве (202) не учитывается для последовательно-отрисовываемой связи первого пикселя (704, 706, 708, 710) и второго пикселя (704, 706, 708, 710);
[106] идентификация (604) в первом массиве (202), окончания первого ряда (204) и начала второго ряда (206) таким образом, что окончание первого ряда (204) включает в себя первый пиксель, а начало второго ряда (206) включает в себя второй пиксель
[107] преобразование (606) первого массива (202) во второй массив (302, 402, 502), второй массив (302, 402, 502) хранится во второй части разметки (108) виртуальной памяти, преобразование (606) включает в себя:
[108] реорганизацию первого ряда (304, 404, 504) и второго ряда (306, 406, 506) во втором массиве таким образом, чтобы две ячейки (303, 403, 503) первого ряда и второго ряда включали в себя, соответственно, два последовательно-отрисовываемых пикселя, которые расположены на заранее определенном сдвиге друг от друга, заранее определенный сдвиг представляет собой одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец; две любых ячейки являются любыми двумя ячейками, отличными от начала первого ряда и окончания второго ряда;
[109] получение (608) запроса на создание дубликата по меньшей мере части графического объекта, дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра графического объекта, создание дубликата выполняется путем выбора подмножества из множества пикселей, подмножество из множества пикселей включает в себя третий пиксель и четвертый пиксель, которые являются непоследовательно-отрисовываемыми пикселями;
[110] идентификация (610) соответствующих частей второго массива, соответствующие части являются рядами, содержащими третий пиксель (704, 706, 708, 710) и четвертый пиксель (704, 706, 708, 710); и
[111] изменение (612) идентифицированных соответствующих частей для выполнения выбора подмножества из множества пикселей.
[112] ПУНКТ 2 Способ по п. 1, в котором способ выполняется программным модулем (110) электронного устройства, программный модуль электронного устройства управляет памятью.
[113] ПУНКТ 3 Способ по любому из пп. 1 и 2, в котором реорганизация первого ряда и второго ряда включает в себя применение алгоритма на основе заполняющей пространство кривой, алгоритм на основе заполняющей пространство кривой предназначен для определения по меньшей мере одного из порядка записи и считывания множества ячеек в первом ряду.
[114] ПУНКТ 4 Способ по п. 3, в котором алгоритм на основе заполняющей пространство кривой представляет собой одно из: алгоритм Z-кода и алгоритм кривой Гилберта.
[115] ПУНКТ 5 Способ по любому из пп. 1-4, в котором идентификация соответствующих частей второго массива включает в себя считывание рядов массива в порядке считывания, который следует заранее определенному сдвигу.
[116] ПУНКТ 6 Способ по любому из пп. 1-5, в котором изменение идентифицированных соответствующих частей включает в себя выполнение алгоритма изменения графического объекта.
[117] ПУНКТ 7 Способ по п. 6, в котором алгоритм изменения графического объекта включает в себя алгоритм Mip-текстурирования.
[118] ПУНКТ 8 Способ по любому из пп. 1-7, который дополнительно включает в себя отрисовку дубликата на устройстве вывода.
[119] ПУНКТ 9 Способ по п. 8, в котором отрисовка включает в себя выполнение по меньшей мере одного из WebGL, OpenGL и DirectX.
[120] ПУНКТ 10 Способ по п. 9, в котором заранее определенное число пикселей определяется заранее с помощью по меньшей мере одного из WebGL, OpenGL и DirectX.
[121] ПУНКТ 11 Способ по любому из пп. 1-10, в котором первая разметка виртуальной памяти и вторая разметка виртуальной памяти предназначены для управления памятью электронного устройства.
[122] ПУНКТ 12 Способ по п. 11, в котором память представляет собой видеокарту.
[123] ПУНКТ 13 Способ по п. 12, в котором первая разметка виртуальной памяти и вторая разметка виртуальной памяти хранятся в другом устройстве памяти, отдельном от видеокарты.
[124] ПУНКТ 14 Способ по п. 1, в котором реорганизация первого ряда и второго ряда во втором массиве обеспечивает логически-последовательное считывание пиксельных данных без пиксельного «перепрыгивания».
[125] ПУНКТ 15 Система (100) сохранения в памяти пиксельных данных, связанных с графическим объектом, включающая в себя:
[126] процессор (102);
[127] память (106), соединенную с процессором;
[128] устройство (112) вывода, соединенное с процессором;
[129] модуль (104) отрисовки, соединенный с процессором, устройство вывода и память, модуль отрисовки поддерживающий разметку (108) виртуальной памяти; модуль отрисовки выполнен с возможностью получать информацию о пиксельных данных из памяти, пиксельные данные, которые связаны с графическим объектом (702), отображаются на устройстве вывода, пиксельные данные для отрисовки графического объекта;
[130] процессор выполняет один или несколько программных модулей (110), данный один из одного или нескольких программных модулей выполнен с возможностью выполнять способ по любому из пп. 1-14.
[131] Некоторые из этих этапов, а также передача-получение сигнала хорошо известны в данной области техники и поэтому для упрощения были опущены в конкретных частях данного описания. Сигналы могут быть переданы-получены с помощью оптических средств (например, опто-волоконного соединения), электронных средств (например, проводного или беспроводного соединения) и механических средств (например, на основе давления, температуры или другого подходящего параметра).
[132] С учетом вышеописанных вариантов осуществления технического решения, которые были описаны и показаны со ссылкой на конкретные этапы, выполненные в определенном порядке, следует иметь в виду, что эти этапы могут быть совмещены, разделены, обладать другим порядком выполнения - все это не выходит за границы настоящего технического решения. Соответственно, порядок и группировка этапов не является ограничением для настоящего технического решения.
[133] Специалисты в данной области техники поймут, что в настоящем описании выражение "получение данных" от пользователя подразумевает получение электронным устройством или другим электронным устройством данных от пользователя в виде электронного (или другого) сигнала. Кроме того, специалисты в данной области техники поймут, что отображение данных пользователю через графический интерфейс пользователя (например, экран компьютерного устройства и тому подобное) может включать в себя передачу сигнала графическому интерфейсу пользователя, этот сигнал содержит данные, которые могут быть обработаны, и по меньшей мере часть этих данных может отображаться пользователю через графический интерфейс пользователя.
[134] Важно иметь в виду, чварианты осуществления настоящего технического решения могут быть выполнены с проявлением и других технических результатов.
[135] Модификации и улучшения вышеописанных вариантов осуществления настоящего технического решения будут ясны специалистам в данной области техники. Предшествующее описание представлено только в качестве примера и не несет никаких ограничений. Таким образом, объем настоящего технического решения ограничен только объемом прилагаемой формулы изобретения.