RU2632415C2 - Method and system for storing in-memory pixel data associated with graphic object - Google Patents

Method and system for storing in-memory pixel data associated with graphic object Download PDF

Info

Publication number
RU2632415C2
RU2632415C2 RU2016104499A RU2016104499A RU2632415C2 RU 2632415 C2 RU2632415 C2 RU 2632415C2 RU 2016104499 A RU2016104499 A RU 2016104499A RU 2016104499 A RU2016104499 A RU 2016104499A RU 2632415 C2 RU2632415 C2 RU 2632415C2
Authority
RU
Russia
Prior art keywords
row
pixel
array
pixels
memory
Prior art date
Application number
RU2016104499A
Other languages
Russian (ru)
Other versions
RU2016104499A (en
Inventor
Антон Васильевич КОРЗУНОВ
Original Assignee
Общество С Ограниченной Ответственностью "Яндекс"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Общество С Ограниченной Ответственностью "Яндекс" filed Critical Общество С Ограниченной Ответственностью "Яндекс"
Priority to RU2016104499A priority Critical patent/RU2632415C2/en
Publication of RU2016104499A publication Critical patent/RU2016104499A/en
Application granted granted Critical
Publication of RU2632415C2 publication Critical patent/RU2632415C2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)

Abstract

FIELD: physics.
SUBSTANCE: method for storing in-memory pixel data associated with a graphic object displayed on the output device of an electronic device, the pixel data is for drawing a graphic object, in which: accessing the first part of the virtual memory markup to obtain pixel data associated with a plurality of pixels of the graphic object stored in the first part of the virtual memory markup; identifying the end of the first row and the beginning of the second row in the first row in such a way that the end of the first row includes the first pixel and the beginning of the second row includes the second pixel; converting the first array into the second array, wherein the second array is stored in the second virtual memory markup part; receiving a request to create a duplicate of, at least, a part of the graphic object; identifying the corresponding parts of the second array, wherein the corresponding parts are the rows, on which the third and the fourth pixels are located; and changing the identified corresponding parts to perform selection of a subset of the plurality of pixels.
EFFECT: smoothing pixel jumping over parts of the line memory at the time of reading the pixel data.
15 cl, 7 dwg

Description

Область техникиTechnical field

[01] Настоящее техническое решение относится к системам и способам управления памятью и, конкретнее, к способу и системе сохранения в памяти пиксельных данных, связанных с графическим объектом.[01] The present technical solution relates to memory management systems and methods, and more particularly, to a method and system for storing in memory pixel data associated with a graphic object.

Уровень техникиState of the art

[02] Современные компьютеры обрабатывают огромное количество информации. Подобная обрабатываемая информация включает в себя графическую информацию, которая отображается на устройстве вывода компьютера. Подобная графическая информация может варьироваться от простого текста, фотографий, видео, до 3D игр и тому подобного. Существует ряд механизмов визуализации для отрисовки графической информации (например, объектов, которые будут отображаться на устройстве вывода и тому подобном). Например, библиотека визуализации графики на веб-страницах (или «WebGL») представляет собой JavaScript API для отрисовки интерактивной 3D и 2D компьютерной графики в веб-браузере без использования плагинов. WebGL обычно используется в мобильных играх, мобильных приложениях, видео проигрывателях, браузерах и тому подобном.[02] Modern computers process a huge amount of information. Such processed information includes graphical information that is displayed on a computer output device. Such graphic information can vary from simple text, photos, videos, to 3D games and the like. There are a number of visualization mechanisms for rendering graphical information (for example, objects that will be displayed on an output device and the like). For example, the graphics visualization library on web pages (or “WebGL”) is a JavaScript API for rendering interactive 3D and 2D computer graphics in a web browser without using plug-ins. WebGL is commonly used in mobile games, mobile applications, video players, browsers, and the like.

[03] WebGL позволяет модулю аппаратного обеспечения, например, видеокарте компьютера, отрисовывать графику. Основным достоинством архитектуры WebGL является тот факт, что аппаратная отрисовка графики обычно является более эффективной, чем программная отрисовка графической информации. Поскольку аппаратная отрисовка обычно обладает более высокой скоростью обработки, она, как правило, позволяет отрисовывать более сложную графику по сравнению с обычными способами программной отрисовки. Тем не менее, WebGL использует линейно организованную разметку памяти под пиксельные данные.[03] WebGL allows a hardware module, such as a computer graphics card, to draw graphics. The main advantage of the WebGL architecture is the fact that hardware rendering of graphics is usually more efficient than software rendering of graphic information. Since hardware rendering usually has a higher processing speed, it usually allows you to render more complex graphics compared to conventional software rendering methods. However, WebGL uses linearly organized memory markup for pixel data.

[04] В патенте США № US 6924811 описан способ сохранения текселей (texture element - текстурный элемент) в кэше текселей. Описанный способ включает в себя считывание координаты t текселя, которая включает в себя множество бит, считывание координаты s текселя, которая включает в себя множество бит, формирование смещения путем конкатенации бит координаты t с битами координаты s, и формирование индекса путем конкатенации бит координаты t с битами координаты s.[04] US Pat. No. 6,924,811 describes a method for storing texels (texture element) in the texel cache. The described method includes reading the texel coordinate t, which includes many bits, reading the texel coordinate s, which includes many bits, generating an offset by concatenating the t coordinate bits with the s coordinate bits, and forming an index by concatenating the t coordinate coordinates bits bits s coordinate.

РаскрытиеDisclosure

[05] Настоящее техническое решение может уменьшить по меньшей мере некоторые недостатки, присущие текущему уровню техники, в отношении обработки поисковых запросов.[05] The present technical solution can reduce at least some of the disadvantages inherent in the current level of technology in relation to the processing of search queries.

[06] Варианты осуществления настоящего технического решения были разработаны с учетом определения изобретателями по меньшей мере одного технического недостатка, связанного с известным уровнем техники. Описание WebGL обеспечивает максимум от 2048 до 16000 пикселей для каждой линейной части разметки виртуальной памяти. WebGL сохраняет пиксельные данные объекта в одномерном массиве. Если для данного объекта нет необходимости сохранять пиксельные данные размером больше 16000 пикселей, простейшим решением является создание второго линейного измерения для сохранения остальных пиксельных данных (далее, при необходимости, третьего и так далее). Аналогичные технические проблемы присутствуют в других случаях, например, при использовании OpenGL или DirectX.[06] Embodiments of the present technical solution have been developed taking into account the inventors' definition of at least one technical disadvantage associated with the prior art. Description WebGL provides a maximum of 2048 to 16000 pixels for each linear part of the virtual memory layout. WebGL stores the pixel data of an object in a one-dimensional array. If for this object there is no need to save pixel data larger than 16,000 pixels, the simplest solution is to create a second linear dimension to save the remaining pixel data (then, if necessary, the third and so on). Similar technical problems are present in other cases, for example, when using OpenGL or DirectX.

[07] Не ограничиваясь каким-либо конкретным вариантом, разработчики приняли во внимание техническую проблему, которая проистекает из того факта, что каждая отдельная линейная часть разметки виртуальной памяти может быть записана в физической памяти, например, ячейки разметки виртуальной памяти, хранящие пиксели, которые будут последовательно отрисованы при отрисовке, могут быть размещены непоследовательно в разметке виртуальной памяти. Эта проблема усугубляется, когда компьютеру необходимо совершать действия над пиксельной информацией, связанной с объектом. Например, подобные действия могут потребоваться в том случае, когда компьютер изменяет визуальный параметр объекта. Например, подобное изменение параметра может быть процедурой Mip-текстурирования, которая использует последовательность структур, каждая из которых обладает последовательно снижающимся разрешением (например) объекта.[07] Not limited to any particular option, the developers took into account the technical problem that stems from the fact that each individual linear part of the virtual memory markup can be written to physical memory, for example, virtual memory markup cells that store pixels that will be sequentially rendered during rendering, can be placed inconsistently in the layout of virtual memory. This problem is compounded when the computer needs to take action on the pixel information associated with the object. For example, such actions may be required if the computer changes the visual parameter of the object. For example, such a change in the parameter can be a Mip-texturing procedure that uses a sequence of structures, each of which has a successively decreasing resolution (for example) of the object.

[08] В соответствии с подходом Mip-текстурирования, когда запрашивается отрисованный объект с более низким разрешением, Mip-текстурирование инициирует модуль WebGL «обрезать» конкретное число пикселей в конкретном порядке (например, каждый третий пиксель объекта) при считывании из разметки виртуальной памяти в порядке уменьшения качества и/или размера и/или разрешения последнего отрисованного изображения (или другого параметра отрисовки). При выполнении подобной обрезки пикселей, модуль WebGL считывает из разметки виртуальной памяти, можно сказать, что WebGL «перепрыгивает» по разным частям памяти (поскольку пиксельные данные расположены не последовательно в рядах разметки виртуальной памяти). Это «перепрыгивание» приводит к меньшей производительности и менее эффективному использованию памяти модуля WebGL (например, видеокарты), а также компьютера в целом.[08] According to the Mip texturing approach, when a lower resolution rendered object is requested, Mip texturing causes the WebGL module to “crop” a specific number of pixels in a specific order (for example, every third pixel of an object) when reading from the virtual memory markup in the order of decreasing the quality and / or size and / or resolution of the last rendered image (or another rendering parameter). When performing such a cropping of pixels, the WebGL module reads from the virtual memory layout, we can say that WebGL “jumps” to different parts of the memory (since the pixel data is not arranged sequentially in the virtual memory layout rows). This “jumping” leads to lower productivity and less efficient use of memory of the WebGL module (for example, a video card), as well as the computer as a whole.

[09] Настоящее решение нацелено на решение заявленных технических проблем. Варианты осуществления настоящего технического решения описывают способ сохранения в памяти (например, на видеокарте) пиксельных данных компьютерного объекта, пиксельные данные компьютерного объекта превышают 16000 пикселей, поэтому может быть использован по меньшей мере один из: сервисов на основе WebGL, OpenGL или DirectX.[09] This decision is aimed at solving the stated technical problems. Embodiments of the present technical solution describe a method for storing in memory (for example, on a video card) the pixel data of a computer object, the pixel data of a computer object exceeds 16,000 pixels, so at least one of: WebGL, OpenGL or DirectX-based services can be used.

[10] В широком смысле, варианты осуществления настоящего технического решения используют алгоритм пространственного заполнения (Z-код, код Гильберта и аналогичные алгоритмы). Эти алгоритмы широко известны и используются в многомерном пространстве для линейного (одномерного) преобразования. Описанное выше решение описывает процесс организации (преобразования) «линейного» разметки памяти в многомерную память с помощью алгоритмов заполнения пространства, которые, в определенном смысле, применяются в обратную сторону.[10] In a broad sense, embodiments of the present technical solution use the spatial filling algorithm (Z-code, Hilbert code and similar algorithms). These algorithms are widely known and used in multidimensional space for linear (one-dimensional) transformation. The solution described above describes the process of organizing (converting) the “linear” markup of memory into multidimensional memory using space filling algorithms, which, in a certain sense, are applied in the opposite direction.

[11] Для сглаживания технических эффектов «пиксельного перепрыгивания» по частям линейной памяти в момент считывания пиксельных данных, описанные способы преобразовывают разметку виртуальной памяти в многомерное (или «непрерывное») пространство (в двумерную матрицу объектов памяти). В двухмерной матрице каждые два пикселя, которые отрисовываются последовательно при отрисовке устройством вывода компьютера, также располагаются в последовательных ячейках двухмерной матрицы.[11] To smooth out the technical effects of "pixel jumping" in parts of linear memory at the time of reading pixel data, the described methods convert the layout of virtual memory into multidimensional (or "continuous") space (into a two-dimensional matrix of memory objects). In a two-dimensional matrix, every two pixels that are drawn sequentially when drawn by a computer output device are also located in successive cells of a two-dimensional matrix.

[12] Отдельный технический эффект относится по меньшей мере к некоторым вариантам технического решения, является быстрое считывание из разметки памяти тех частей памяти, которые представляют соседние элементы (т.е. последовательно отрисованные пиксели) исходного объекта (кривой).[12] A separate technical effect relates to at least some technical solutions, which is quick reading from the memory layout of those parts of the memory that represent adjacent elements (ie, successively drawn pixels) of the original object (curve).

[13] Первым объектом настоящего технического решения является способ сохранения информации о пиксельных данных в памяти. Пиксельные данные связаны с графическим объектом, который отображается на устройстве вывода электронного устройства, пиксельные данные отрисовываются в графическом объекте. Способ выполняется электронным устройством. Способ включает в себя: получение доступа к первой части разметки виртуальной памяти для получения пиксельных данных, связанных со множеством пикселей графического объекта, которые хранятся в первой части разметки виртуальной памяти, множество пикселей включает в себя первый пиксель и второй пиксель, первый пиксель и второй пиксель расположены как последовательно-отрисовываемые при отображении графического объекта на устройстве вывода; первая часть разметки виртуальной памяти организована в первом массиве с заранее определенным числом пикселей, которые организованы в одном ряду из множества рядов, которые формируют первый массив, организация множества рядов в первом массиве не учитывается для последовательно-отрисовываемой связи первого пикселя и второго пикселя; идентификацию в первом ряду, окончания первого ряда и начала второго ряда таким образом, что окончание первого ряда включает в себя первый пиксель, а начало второго ряда включает в себя второй пиксель; преобразование первого массива во второй массив, второй массив сохраняется во второй части разметки виртуальной памяти, преобразование включает в себя: реорганизацию первого ряда и второго ряда во втором массиве таким образом, чтобы две ячейки первого ряда и второго ряда включали в себя, соответственно, два последовательно-отрисовываемых пикселя, которые расположены на заранее определенном сдвиге друг от друга, заранее определенный сдвиг представляет собой одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец; две любых ячейки являются любыми двумя ячейками, отличными от начала первого ряда и окончания второго ряда; получение запроса на создание дубликата по меньшей мере части графического объекта, дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра графического объекта, создание дубликата выполняется путем выбора подмножества из множества пикселей, подмножество из множества пикселей включает в себя третий пиксель и четвертый пиксель, которые являются непоследовательно-отрисовываемыми пикселями; идентификацию соответствующих частей второго массива, соответствующие части являются рядами, на которых расположены третий и четвертый пиксели; и изменение идентифицированных соответствующих частей для выполнения выбора подмножества из множества пикселей.[13] The first object of this technical solution is a method for storing information about pixel data in memory. Pixel data is associated with a graphic object that is displayed on an output device of an electronic device, pixel data is drawn in a graphic object. The method is performed by an electronic device. The method includes: accessing the first part of the virtual memory markup to obtain pixel data associated with a plurality of pixels of the graphic object that are stored in the first part of the virtual memory markup, the plurality of pixels includes a first pixel and a second pixel, a first pixel and a second pixel located as sequentially drawn when displaying a graphical object on the output device; the first part of the virtual memory markup is organized in the first array with a predetermined number of pixels that are organized in one row from the many rows that form the first array, the organization of many rows in the first array is not taken into account for sequentially drawn communication of the first pixel and the second pixel; identification in the first row, the end of the first row and the beginning of the second row so that the end of the first row includes the first pixel, and the beginning of the second row includes the second pixel; the conversion of the first array to the second array, the second array is stored in the second part of the virtual memory layout, the conversion includes: reorganizing the first row and second row in the second array so that two cells of the first row and second row include, respectively, two in series of the drawn pixels that are located at a predetermined offset from each other, the predetermined offset is one of: (i) a position shift by one row and (ii) a position shift by one column; any two cells are any two cells other than the beginning of the first row and the end of the second row; receiving a request to create a duplicate of at least a part of the graphic object, the duplicate has at least one rendering parameter that is different from the parameter of the graphic object, creating a duplicate is performed by selecting a subset of the set of pixels, the subset of the set of pixels includes a third pixel and a fourth pixel which are inconsistently rendered pixels; identification of the corresponding parts of the second array, the corresponding parts are the rows on which the third and fourth pixels are located; and changing the identified respective parts to select a subset of the plurality of pixels.

[14] В некоторых вариантах осуществления способ выполняется программным модулем электронного устройства, модуль электронного устройства управляет памятью.[14] In some embodiments, the method is performed by a software module of an electronic device, the electronic device module controls the memory.

[15] В некоторых вариантах осуществления способа, реорганизация первого ряда и второго ряда включает в себя применение алгоритма на основе заполняющей пространство кривой, алгоритм на основе заполняющей пространство кривой предназначен для определения по меньшей мере одного из порядка записи и считывания множества ячеек в первом ряду.[15] In some embodiments of the method, the reorganization of the first row and the second row includes applying an algorithm based on a space-filling curve, an algorithm based on a space-filling curve is designed to determine at least one of the write and read order of a plurality of cells in the first row.

[16] В некоторых вариантах осуществления способа, алгоритм на основе заполняющей пространство кривой представляет собой одно из: алгоритм Z-кода и алгоритм кривой Гилберта.[16] In some embodiments of the method, an algorithm based on a space-filling curve is one of: a Z-code algorithm and a Hilbert curve algorithm.

[17] В некоторых вариантах осуществления способа, идентификация соответствующих частей второго массива включает в себя считывание рядов массива в порядке считывания, который следует заранее определенному сдвигу.[17] In some embodiments of the method, identifying the corresponding parts of the second array includes reading the rows of the array in a reading order that follows a predetermined shift.

[18] В некоторых вариантах осуществления способа, изменение идентифицированных соответствующих частей включает в себя выполнение алгоритма изменения графического объекта.[18] In some embodiments of the method, changing the identified corresponding parts includes executing an algorithm for changing a graphic object.

[19] В некоторых вариантах осуществления способа, алгоритм изменения графического объекта представляет собой один из: алгоритм MIP-текстурирования, алгоритм анти-алиасинга, алгоритм анизотропной фильтрации, улучшенное MIP-текстурирование с алгоритмом анизотропной фильтрации и алгоритм пирамидальной обработки изображений.[19] In some embodiments of the method, the graphic object modification algorithm is one of: a MIP texturing algorithm, an anti-aliasing algorithm, anisotropic filtering algorithm, improved MIP texturing with anisotropic filtering algorithm, and pyramidal image processing algorithm.

[20] В некоторых вариантах осуществления способ дополнительно включает в себя отрисовку дубликата на устройстве вывода.[20] In some embodiments, the method further includes rendering a duplicate on the output device.

[21] В некоторых вариантах осуществления способа, отрисовка включает в себя выполнение по меньшей мере одного из WebGL, OpenGL и DirectX.[21] In some embodiments of the method, rendering includes performing at least one of WebGL, OpenGL, and DirectX.

[22] В некоторых вариантах осуществления способа, заранее определенное число пикселей определяется заранее с помощью по меньшей мере одного из WebGL, OpenGL и DirectX.[22] In some embodiments of the method, a predetermined number of pixels is determined in advance using at least one of WebGL, OpenGL, and DirectX.

[23] В некоторых вариантах осуществления способа, первая разметка виртуальной памяти и вторая разметка виртуальной памяти предназначены для управления памятью электронного устройства.[23] In some embodiments of the method, the first virtual memory layout and the second virtual memory layout are for managing the memory of an electronic device.

[24] В некоторых вариантах осуществления способа, память представляет собой видеокарту.[24] In some embodiments of the method, the memory is a video card.

[25] В некоторых вариантах осуществления способа, первая разметка виртуальной памяти и вторая разметка виртуальной памяти хранятся в другом устройстве памяти, отдельном от видеокарты.[25] In some embodiments of the method, the first virtual memory layout and the second virtual memory layout are stored in another memory device separate from the video card.

[26] В некоторых вариантах осуществления способа, реорганизация первого ряда и второго ряда во втором массиве позволяет осуществлять логически-последовательное считывание пиксельных данных без пиксельного «перепрыгивания».[26] In some embodiments of the method, the reorganization of the first row and second row in the second array allows a logical sequential reading of pixel data without pixel "jumping".

[27] Другим объектом настоящего технического решения является компьютерная система. Компьютерная система включает в себя: процессор; память, соединенную с процессором; устройство вывода, соединенное с процессором; модуль отрисовки, соединенный с процессором, устройством вывода и памятью, модуль отрисовки поддерживает разметку виртуальной памяти; модуль отрисовки выполнен с возможностью получать информацию о пиксельных данных из памяти, пиксельные данные, связанные с графическим объектом, отображаются на устройстве вывода, пиксельные данные предназначены для обработки графического объекта; процессор выполняет один или несколько программных модулей, данный один из одного или нескольких программных модулей выполнен с возможностью осуществлять: получение доступа к первой части разметки виртуальной памяти для получения пиксельных данных, связанных со множеством пикселей графического объекта, которые хранятся в первой части разметки виртуальной памяти, множество пикселей включает в себя первый пиксель и второй пиксель, первый пиксель и второй пиксель расположены как последовательно-отрисовываемые при отображении графического объекта на устройстве вывода; первая часть разметки виртуальной памяти организована в первом массиве с заранее определенным числом пикселей, которые организованы в одном ряду из множества рядов, которые формируют первый массив, организация множества рядов в первом массиве не учитывается для последовательно-отрисовываемой связи первого пикселя и второго пикселя; идентификацию в первом ряду, окончания первого ряда и начала второго ряда таким образом, что окончание первого ряда включает в себя первый пиксель, а начало второго ряда включает в себя второй пиксель; преобразование первого массива во второй массив, второй массив сохраняется во второй части разметки виртуальной памяти, преобразование включает в себя: реорганизацию первого ряда и второго ряда во втором массиве таким образом, чтобы две ячейки первого ряда и второго ряда включали в себя, соответственно, два последовательно-отрисовываемых пикселя, которые расположены на заранее определенном сдвиге друг от друга, заранее определенный сдвиг представляет собой одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец; две любых ячейки являются любыми двумя ячейками, отличными от начала первого ряда и окончания второго ряда; получение запроса на создание дубликата по меньшей мере части графического объекта, дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра графического объекта, создание дубликата выполняется путем выбора подмножества из множества пикселей, подмножество из множества пикселей включает в себя третий пиксель и четвертый пиксель, которые являются непоследовательно-отрисовываемыми пикселями; идентификацию соответствующих частей второго массива, соответствующие части являются рядами, на которых расположены третий и четвертый пиксели; и изменение идентифицированных соответствующих частей для выполнения выбора подмножества из множества пикселей.[27] Another object of this technical solution is a computer system. A computer system includes: a processor; memory connected to the processor; an output device connected to the processor; a rendering module connected to the processor, output device, and memory; the rendering module supports marking of virtual memory; the rendering module is configured to obtain information about the pixel data from the memory, the pixel data associated with the graphic object is displayed on the output device, the pixel data is intended for processing the graphic object; the processor executes one or more program modules, this one of one or more program modules is configured to: access the first part of the virtual memory markup to obtain pixel data associated with a plurality of pixels of the graphic object that are stored in the first part of the virtual memory markup, a plurality of pixels includes a first pixel and a second pixel, the first pixel and the second pixel are arranged as sequentially rendered when displaying graphically whom object on the output device; the first part of the virtual memory markup is organized in the first array with a predetermined number of pixels that are organized in one row from the many rows that form the first array, the organization of many rows in the first array is not taken into account for sequentially drawn communication of the first pixel and the second pixel; identification in the first row, the end of the first row and the beginning of the second row so that the end of the first row includes the first pixel, and the beginning of the second row includes the second pixel; the conversion of the first array to the second array, the second array is stored in the second part of the virtual memory layout, the conversion includes: reorganizing the first row and second row in the second array so that two cells of the first row and second row include, respectively, two in series of the drawn pixels that are located at a predetermined offset from each other, the predetermined offset is one of: (i) a position shift by one row and (ii) a position shift by one column; any two cells are any two cells other than the beginning of the first row and the end of the second row; receiving a request to create a duplicate of at least a part of the graphic object, the duplicate has at least one rendering parameter that is different from the parameter of the graphic object, creating a duplicate is performed by selecting a subset of the set of pixels, the subset of the set of pixels includes a third pixel and a fourth pixel which are inconsistently rendered pixels; identification of the corresponding parts of the second array, the corresponding parts are the rows on which the third and fourth pixels are located; and changing the identified respective parts to select a subset of the plurality of pixels.

[28] В контексте настоящего описания, если четко не указано иное, "электронное устройство", "пользовательское устройство", "сервер", "удаленный сервер" и "компьютерная система" подразумевают под собой аппаратное и/или системное обеспечение, подходящее к решению соответствующей задачи. Таким образом, некоторые неограничивающие примеры аппаратного и/или программного обеспечения включают в себя компьютеры (серверы, настольные компьютеры, ноутбуки, нетбуки и так далее), смартфоны, планшеты, сетевое оборудование (маршрутизаторы, коммутаторы, шлюзы и так далее) и/или их комбинацию.[28] In the context of the present description, unless clearly indicated otherwise, "electronic device", "user device", "server", "remote server" and "computer system" mean hardware and / or system software suitable for the solution corresponding task. Thus, some non-limiting examples of hardware and / or software include computers (servers, desktop computers, laptops, netbooks, etc.), smartphones, tablets, network equipment (routers, switches, gateways, etc.) and / or their a combination.

[29] В контексте настоящего описания, если четко не указано иное, "машиночитаемый носитель" и "память" подразумевает под собой носитель абсолютно любого типа и характера, не ограничивающие примеры включают в себя ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB-ключи, флеш-карты, твердотельные накопители и накопители на магнитной ленте.[29] In the context of the present description, unless clearly indicated otherwise, “machine-readable medium” and “memory” means a medium of absolutely any type and character, non-limiting examples include RAM, ROM, disks (CDs, DVDs) , floppy disks, hard drives, etc.), USB keys, flash cards, solid state drives and tape drives.

[30] В контексте настоящего описания, если четко не указано иное, «указание» информационного элемента может представлять собой сам информационный элемент или указатель, отсылку, ссылку или другой косвенный способ, позволяющий получателю указания найти сеть, память, базу данных или другой машиночитаемый носитель, из которого может быть извлечен информационный элемент. Например, указание на файл может включать в себя сам файл (т.е. его содержимое), или же оно может являться уникальным дескриптором файла, идентифицирующим файл по отношению к конкретной файловой системе, или каким-то другими средствами передавать получателю указание на сетевую папку, адрес памяти, таблицу в базе данных или другое место, в котором можно получить доступ к файлу. Как будет понятно специалистам в данной области техники, степень точности, необходимая для такого указания, зависит от степени первичного понимания того, как должна быть интерпретирована информация, которой обмениваются получатель и отправитель указателя. Например, если до установления связи между отправителем и получателем понятно, что признак информационного элемента принимает вид ключа базы данных для записи в конкретной таблице заранее установленной базы данных, содержащей информационный элемент, то передача ключа базы данных - это все, что необходимо для эффективной передачи информационного элемента получателю, несмотря на то, что сам по себе информационный элемент не передавался между отправителем и получателем указания.[30] In the context of the present description, unless clearly indicated otherwise, an “indication” of an information element may be the information element or pointer itself, a reference, a link, or another indirect method allowing the recipient of the instruction to find a network, memory, database or other computer-readable medium from which the information item can be extracted. For example, a file reference can include the file itself (i.e. its contents), or it can be a unique file descriptor that identifies the file with respect to a specific file system, or by some other means send the destination a network folder , a memory address, a table in the database, or another place where you can access the file. As will be understood by those skilled in the art, the degree of accuracy necessary for such an indication depends on the degree of primary understanding of how the information exchanged between the receiver and sender of the pointer. For example, if before establishing a connection between the sender and the recipient, it is clear that the sign of the information element takes the form of a database key for recording in a specific table a pre-installed database containing the information element, then transferring the database key is all that is necessary for the efficient transmission of information element to the recipient, despite the fact that the information element itself was not transmitted between the sender and the recipient of the instruction.

[31] В контексте настоящего описания, если конкретно не указано иное, слова «первый», «второй», «третий» и т.д. используются в виде прилагательных исключительно для того, чтобы отличать существительные, к которым они относятся, друг от друга, а не для целей описания какой-либо конкретной взаимосвязи между этими существительными. Так, например, следует иметь в виду, что использование терминов «первый сервер» и «третий сервер» не подразумевает какого-либо порядка, отнесения к определенному типу, хронологии, иерархии или ранжирования (например) серверов/между серверами, равно как и их использование (само по себе) не предполагает, что некий "второй сервер" обязательно должен существовать в той или иной ситуации. В дальнейшем, как указано здесь в других контекстах, упоминание «первого» элемента и «второго» элемента не исключает возможности того, что это один и тот же фактический реальный элемент. Так, например, в некоторых случаях, «первый» сервер и «второй» сервер могут являться одним и тем же программным и/или аппаратным обеспечением, а в других случаях они могут являться разным программным и/или аппаратным обеспечением.[31] In the context of the present description, unless specifically indicated otherwise, the words "first", "second", "third", etc. used in the form of adjectives solely to distinguish the nouns to which they relate from each other, and not for the purpose of describing any specific relationship between these nouns. So, for example, it should be borne in mind that the use of the terms “first server” and “third server” does not imply any order, assignment to a certain type, chronology, hierarchy or ranking (for example) of servers / between servers, as well as their use (in itself) does not imply that a certain "second server" must exist in a given situation. Further, as indicated here in other contexts, the mention of the “first” element and the “second” element does not exclude the possibility that it is one and the same actual real element. So, for example, in some cases, the “first” server and the “second” server can be the same software and / or hardware, and in other cases they can be different software and / or hardware.

[32] Каждый вариант осуществления настоящего технического решения преследует по меньшей мере одну из вышеупомянутых целей и/или объектов. Следует иметь в виду, что некоторые объекты данной технического решения, полученные в результате попыток достичь вышеупомянутой цели могут удовлетворять и другим целям, отдельно не указанным здесь.[32] Each embodiment of the present technical solution pursues at least one of the aforementioned objectives and / or objects. It should be borne in mind that some of the objects of this technical solution obtained as a result of attempts to achieve the aforementioned goals can satisfy other goals that are not specifically indicated here.

[33] Дополнительные и/или альтернативные характеристики, аспекты и преимущества вариантов осуществления настоящего технического решения станут очевидными из последующего описания, прилагаемых чертежей и прилагаемой формулы изобретения.[33] Additional and / or alternative characteristics, aspects and advantages of embodiments of the present technical solution will become apparent from the following description, the attached drawings and the attached claims.

Краткое описание чертежейBrief Description of the Drawings

[34] Для лучшего понимания настоящего технического решения, а также других его аспектов и характерных черт сделана ссылка на следующее описание, которое должно использоваться в сочетании с прилагаемыми чертежами, где:[34] For a better understanding of this technical solution, as well as its other aspects and characteristics, reference is made to the following description, which should be used in combination with the accompanying drawings, where:

[35] На Фиг. 1 представлена диаграмма компьютерной системы, которая подходит для реализации вариантов настоящего технического решения, и/или которая используется в сочетании с вариантами осуществления настоящего технического решения.[35] In FIG. 1 is a diagram of a computer system that is suitable for implementing embodiments of the present technical solution, and / or which is used in combination with embodiments of the present technical solution.

[36] На Фиг. 2 представлена принципиальная схема разметки виртуальной памяти, которая поддерживается компьютерной системой, показанной на Фиг. 1, разметка виртуальной памяти реализована в соответствии с первым неограничивающим вариантом осуществления настоящего технического решения.[36] In FIG. 2 is a schematic diagram of a virtual memory layout that is supported by the computer system shown in FIG. 1, virtual memory markup is implemented in accordance with a first non-limiting embodiment of the present technical solution.

[37] На Фиг. 3 представлена принципиальная схема разметки виртуальной памяти, которая поддерживается компьютерной системой, показанной на Фиг. 1, разметка виртуальной памяти реализована в соответствии со вторым неограничивающим вариантом осуществления настоящего технического решения.[37] In FIG. 3 is a schematic diagram of a virtual memory markup supported by the computer system shown in FIG. 1, virtual memory markup is implemented in accordance with a second non-limiting embodiment of the present technical solution.

[38] На Фиг. 4 представлена принципиальная схема разметки виртуальной памяти, которая поддерживается компьютерной системой, показанной на Фиг. 1, разметка виртуальной памяти реализована в соответствии с третьим неограничивающим вариантом осуществления настоящего технического решения.[38] In FIG. 4 is a schematic diagram of a virtual memory layout that is supported by the computer system shown in FIG. 1, virtual memory markup is implemented in accordance with a third non-limiting embodiment of the present technical solution.

[39] На Фиг. 5 представлена блок-схема способа сохранения в памяти пиксельных данных, связанных с графическим объектом, который будет отрисован, способ выполняется компьютером из компьютерной системы, показанной на Фиг. 1, способ исполняется в соответствии с неограничивающими вариантами осуществления настоящего технического решения.[39] In FIG. 5 is a flowchart of a method for storing in memory pixel data associated with a graphic object to be drawn; the method is executed by a computer from the computer system shown in FIG. 1, the method is executed in accordance with non-limiting embodiments of the present technical solution.

[40] На Фиг. 6 представлена блок-схема способа сохранения пиксельных данных, способ выполняется компьютерной системой, показанной на Фиг. 1.[40] In FIG. 6 is a flowchart of a method for storing pixel data; the method is performed by the computer system shown in FIG. one.

[41] На Фиг 7 представлена принципиальная схема графического объекта, который может быть отрисован на устройстве вывода компьютерной системы, показанной на Фиг. 1.[41] FIG. 7 is a schematic diagram of a graphical object that can be drawn on the output device of the computer system shown in FIG. one.

[42] Также следует отметить, что чертежи выполнены не в масштабе, если не специально указано иное.[42] It should also be noted that the drawings are not to scale, unless specifically indicated otherwise.

ОсуществлениеExercise

[43] Все примеры и используемые здесь условные конструкции предназначены, главным образом, для того, чтобы помочь читателю понять принципы настоящего технического решения, а не для установления границ его объема. Следует также отметить, что специалисты в данной области техники могут разработать различные схемы, отдельно не описанные и не показанные здесь, но которые, тем не менее, воплощают собой принципы настоящего технического решения и находятся в границах его объема.[43] All examples and conditional constructions used here are intended primarily to help the reader understand the principles of this technical solution, and not to establish the boundaries of its scope. It should also be noted that specialists in this field of technology can develop various schemes that are not separately described and not shown here, but which, however, embody the principles of this technical solution and are within its scope.

[44] Кроме того, для ясности в понимании, следующее описание касается достаточно упрощенных вариантов осуществления настоящего технического решения. Как будет понятно специалисту в данной области техники, многие варианты осуществления настоящего технического решения будут обладать гораздо большей сложностью.[44] In addition, for clarity of understanding, the following description relates to fairly simplified embodiments of the present technical solution. As will be clear to a person skilled in the art, many embodiments of the present technical solution will have much greater complexity.

[45] Некоторые полезные примеры модификаций настоящего технического решения также могут быть охвачены нижеследующим описанием. Целью этого является также исключительно помощь в понимании, а не определение объема и границ настоящего технического решения. Эти модификации не представляют собой исчерпывающего списка, и специалисты в данной области техники могут создавать другие модификации, остающиеся в границах объема настоящего технического решения. Кроме того, те случаи, где не были представлены примеры модификаций, не должны интерпретироваться как то, что никакие модификации невозможны, и/или что то, что было описано, является единственным вариантом осуществления этого элемента настоящего технического решения.[45] Some useful examples of modifications of the present technical solution may also be covered by the following description. The purpose of this is also solely assistance in understanding, and not determining the scope and boundaries of this technical solution. These modifications are not an exhaustive list, and specialists in the art can create other modifications that remain within the scope of this technical solution. In addition, those cases where examples of modifications were not presented should not be interpreted as the fact that no modifications are possible, and / or that what has been described is the only embodiment of this element of the present technical solution.

[46] Более того, все заявленные здесь принципы, аспекты и варианты осуществления настоящего технического решения, равно как и конкретные их примеры, предназначены для обозначения их структурных и функциональных основ. Таким образом, например, специалистами в данной области техники будет очевидно, что представленные здесь блок-схемы представляют собой концептуальные иллюстративные схемы, отражающие принципы настоящего технического решения. Аналогично, любые блок-схемы, диаграммы, псевдокоды и т.п. представляют собой различные процессы, которые могут быть представлены на машиночитаемом носителе и, таким образом, использоваться компьютером или процессором, вне зависимости от того, показан явно подобный компьютер или процессор, или нет.[46] Moreover, all the principles, aspects and implementation options of the present technical solution stated here, as well as their specific examples, are intended to indicate their structural and functional foundations. Thus, for example, it will be apparent to those skilled in the art that the block diagrams presented here are conceptual illustrative diagrams that reflect the principles of the present technical solution. Similarly, any flowcharts, diagrams, pseudo codes, etc. are various processes that can be represented on a computer-readable medium and thus be used by a computer or processor, regardless of whether an explicitly similar computer or processor is shown or not.

[47] Функции различных элементов, показанных на фигурах, включая функциональный блок, обозначенный как «процессор» или «графический процессор», могут быть обеспечены с помощью специализированного аппаратного обеспечения или же аппаратного обеспечения, способного использовать подходящее программное обеспечение. Когда речь идет о процессоре, функции могут обеспечиваться одним специализированным процессором, одним общим процессором или множеством индивидуальных процессоров, причем некоторые из них могут являться общими. В некоторых вариантах осуществления настоящего технического решения процессор может являться универсальным процессором, например, центральным процессором (CPU) или специализированным для конкретной цели процессором, например, графическим процессором (GPU). Более того, использование термина "процессор" или "контроллер" не должно подразумевать исключительно аппаратное обеспечение, способное поддерживать работу программного обеспечения, и может включать в себя, без установления ограничений, цифровой сигнальный процессор (DSP), сетевой процессор, интегральная схема специального назначения (ASIC), программируемую пользователем вентильную матрицу (FPGA), постоянное запоминающее устройство (ПЗУ) для хранения программного обеспечения, оперативное запоминающее устройство (ОЗУ) и энергонезависимое запоминающее устройство. Также может быть включено другое аппаратное обеспечение, обычное и/или специальное.[47] The functions of the various elements shown in the figures, including a function block designated as “processor” or “graphics processor”, can be provided using specialized hardware or hardware capable of using suitable software. When it comes to a processor, functions can be provided by one specialized processor, one common processor or many individual processors, some of which may be shared. In some embodiments of the present technical solution, the processor may be a universal processor, for example, a central processing unit (CPU), or a processor specialized for a specific purpose, for example, a graphic processor (GPU). Moreover, the use of the term “processor” or “controller” should not imply exclusively hardware capable of supporting the operation of the software, and may include, without limitation, a digital signal processor (DSP), a network processor, a special purpose integrated circuit ( ASIC), Field Programmable Gate Array (FPGA), read-only memory (ROM) for storing software, random access memory (RAM) and non-volatile memory minal device. Other hardware may also be included, conventional and / or special.

[48] На Фиг. 1 представлена схема системы 100, реализованной в соответствии с неограничивающими вариантами осуществления настоящего технического решения. Физическое осуществление компьютерной системы 100 никак конкретно не ограничено. Компьютерная система 100 может, например, в качестве не ограничивающего примера, представлять собой настольный компьютер, ноутбук, смартфон (например, Apple iPhone™ or a Samsung Galaxy S5™), персональный цифровой помощник (PDA) или другое устройство, включающее в себя функциональность вычисления и возможности передачи данных. Альтернативно, компьютерная система 100 может быть реализована как сервер или другой сетевой компонент.[48] In FIG. 1 is a diagram of a system 100 implemented in accordance with non-limiting embodiments of the present technical solution. The physical implementation of the computer system 100 is not specifically limited. The computer system 100 may, for example, by way of non-limiting example, be a desktop computer, laptop, smartphone (e.g., Apple iPhone ™ or a Samsung Galaxy S5 ™), personal digital assistant (PDA), or other device including computing functionality and data transfer capabilities. Alternatively, the computer system 100 may be implemented as a server or other network component.

[49] Компьютерная система 100 (которая также может упоминаться здесь периодически как «компьютер 100», «электронное устройство 100», «устройство 100 обработки») может содержать среди прочего внутренние аппаратные компоненты, включая один или несколько мультиядерных процессоров, которые коллективно упоминаются здесь как процессор 102. С процессором 102 соединена (например, через USB) память 106 (например, ОЗУ). Память 106 может охватывать один или несколько носителей и в целом предоставлять место для хранения компьютерного кода (например, программного и/или аппаратного обеспечения) и данных. В качестве примера, память 106 может включать разнообразные материальные машиночитаемые носители, включая постоянное запоминающее устройство ПЗУ (ROM) и/или оперативное запоминающее устройство ОЗУ (RAM). Как широко известно в данной области техники, ПЗУ передает данные и команды однонаправленно процессору 102, а ОЗУ обычно используется для передачи данных и команд двунаправленно.[49] The computer system 100 (which may also be referred to here periodically as “computer 100”, “electronic device 100”, “processing device 100”) may include, inter alia, internal hardware components, including one or more multi-core processors that are collectively referred to herein like processor 102. A memory 106 (for example, RAM) is connected (for example, via USB) to the processor 102. The memory 106 may span one or more media and generally provide a place to store computer code (eg, software and / or hardware) and data. As an example, memory 106 may include a variety of material machine-readable media, including read-only memory (ROM) and / or random access memory (RAM). As is widely known in the art, the ROM transmits data and instructions unidirectionally to the processor 102, and the RAM is typically used to transmit data and instructions bi-directionally.

[50] Память 106 может также включать одно или несколько стационарных запоминающих устройств, в виде, среди прочих подходящих форм памяти, например, жестких дисков (HDD), твердотельных накопителей (SSD), карт флэш-памяти (например, безопасные цифровые карты или SD-карты, встроенные мультимедийные карты или еММС карты), соединенных двунаправленно с процессором 102. Информация может также располагаться на одном или нескольких съемных носителях, загруженных или установленных в компьютерную систему 100, когда это необходимо.[50] Memory 106 may also include one or more stationary storage devices, in the form, among other suitable forms of memory, for example, hard disk drives (SSDs), solid state drives (SSDs), flash memory cards (eg, secure digital cards or SD cards, integrated multimedia cards or eMMS cards) connected bi-directionally to the processor 102. The information may also be located on one or more removable media loaded or installed in the computer system 100, when necessary.

[51] Память 106 может хранить среди прочего серию машиночитаемых инструкций, выполнение которых позволяет процессору 102 выполнять различные операции, описанные здесь.[51] The memory 106 may store, among other things, a series of machine-readable instructions, the execution of which allows the processor 102 to perform various operations described herein.

[52] Несмотря на то, что память 106 представлена в качестве единого физического блока, это не является необходимым в каждом варианте осуществления настоящего технического решения. Таким образом, память 106 может быть реализована в виде нескольких отдельных частей памяти. Эти отдельные части могут быть реализованы как отдельные физические устройства, которые необязательно являются одинаковыми. Тем не менее, части памяти могут быть реализованы как часть единого физического устройства, которое разделено на виртуальные/логические части.[52] Despite the fact that the memory 106 is presented as a single physical unit, this is not necessary in each embodiment of the present technical solution. Thus, the memory 106 can be implemented as several separate parts of the memory. These individual parts can be implemented as separate physical devices, which are not necessarily the same. However, parts of the memory can be implemented as part of a single physical device, which is divided into virtual / logical parts.

[53] Процессор 102 также соединен с устройством 112 вывода (которое также упоминается здесь иногда как «устройство ввода-вывода»). В общем случае, устройство 112 вывода выполнено с возможностью предоставлять визуальную информацию пользователю (не показан) компьютерной системы 100. Устройство 112 вывода может быть реализовано как экран или монитор. Устройство 112 вывода может включать в себя одно или несколько устройств ввода и устройств вывода. Например, устройство 112 вывода может представлять собой жидкокристаллический дисплей (LCD), светодиодный дисплей (LED), дисплей на основе интерферометрической модуляции (IMOD) или дисплей на основе любой другой подходящей технологии. В некоторых вариантах осуществления настоящего технического решения, устройство 112 вывода может быть многофункциональным модулем, например, сенсорным экраном, который выполняет функцию как устройства вывода (для предоставления пользователю информации), так и устройства ввода (для получения команд от пользователя).[53] The processor 102 is also connected to an output device 112 (which is also sometimes referred to here as an “input / output device”). In general, the output device 112 is configured to provide visual information to a user (not shown) of the computer system 100. The output device 112 may be implemented as a screen or monitor. The output device 112 may include one or more input devices and output devices. For example, the output device 112 may be a liquid crystal display (LCD), an LED display (LED), an interferometric modulation (IMOD) display, or a display based on any other suitable technology. In some embodiments of the present technical solution, the output device 112 may be a multifunctional module, for example, a touch screen, which performs the function of both an output device (for providing information to the user) and an input device (for receiving commands from the user).

[54] Другими словами, устройство 112 вывода в общем случае выполнено с возможностью отображать графический интерфейс пользователя (GUI), который предоставляет простой в использовании графический интерфейс между пользователем компьютерной системы 100 и операционной системой или приложением(ями), установленном на компьютерной системе 100. В общем случае графический интерфейс пользователя (GUI) представляет программы, файлы и операционные опции с помощью графических изображений. В время проведения операции пользователь может выбрать и активировать разнообразные графические изображения, отображенные на дисплее, для инициации функций и задач, связанных с ними.[54] In other words, the output device 112 is generally configured to display a graphical user interface (GUI) that provides an easy-to-use graphical interface between the user of the computer system 100 and the operating system or application (s) installed on the computer system 100. In general, a graphical user interface (GUI) represents programs, files, and operating options using graphical images. During the operation, the user can select and activate a variety of graphic images displayed on the display to initiate functions and tasks associated with them.

[55] Также с процессором 102 соединен модуль 104 отрисовки. В некоторых вариантах осуществления настоящего технического решения, модуль 104 отрисовки реализован как аппаратный модуль, способный отрисовывать графику для представления на устройстве 112 вывода. В некоторых вариантах осуществления настоящего технического решения, модуль 104 отрисовки реализован в соответствии со стандартом WebGL.[55] Also, a rendering module 104 is connected to the processor 102. In some embodiments of the present technical solution, the rendering module 104 is implemented as a hardware module capable of rendering graphics for presentation on the output device 112. In some embodiments of the present technical solution, the rendering module 104 is implemented in accordance with the WebGL standard.

[56] Несмотря на то что в представленном варианте осуществления технического решения, модуль 104 отрисовки представлен как аппаратный модуль, это не является обязательным в каждом варианте осуществления настоящего технического решения. Например, в альтернативных вариантах осуществления настоящего технического решения, модуль 104 отрисовки может быть реализован как аппаратный модуль, соединенный с аппаратным модулем видеокарты (модулем видеочипсета), например, nVIDIA GeForce™ 970. В другом варианте осуществления настоящего технического решения, модуль отрисовки может быть реализован как программный модуль, соединенный с модулем видеочипсета видеокарты.[56] Despite the fact that in the presented embodiment of the technical solution, the rendering module 104 is presented as a hardware module, this is not mandatory in each embodiment of the present technical solution. For example, in alternative embodiments of the present technical solution, the rendering module 104 may be implemented as a hardware module connected to a hardware module of a video card (video chip module), for example, nVIDIA GeForce ™ 970. In another embodiment of the present technical solution, a rendering module may be implemented as a software module connected to a video chip module of a video card.

[57] В еще одном варианте осуществления настоящего технического решения, модуль 104 отрисовки может быть выполнен как часть программного модуля, например, как веб-браузер (например, Mozilla Firefox™, Yandex Browser™ и так далее). В конкретном варианте осуществления настоящего технического решения, где модуль 104 отрисовки реализован как часть веб-браузера, модуль 104 отрисовки может также отрисовывать веб-страницы, веб-графику, например, он-лайн видео фрагменты, изображения, анимацию, стили CSS, HTML и так далее.[57] In another embodiment of the present technical solution, the rendering module 104 may be executed as part of a software module, for example, as a web browser (for example, Mozilla Firefox ™, Yandex Browser ™ and so on). In a particular embodiment of the present technical solution, where the rendering module 104 is implemented as part of a web browser, the rendering module 104 can also render web pages, web graphics, for example, online video fragments, images, animations, CSS styles, HTML and etc.

[58] В общем случае, модуль 104 отрисовки выполнен с возможностью (i) получать пиксельные данные, связанные с графическим объектом, пиксельные данные могут храниться в памяти 106 и (ii) обрабатывать пиксельные данные для отрисовки и отображения на устройстве 112 вывода. Природа графического объекта никак конкретно не ограничена. Например, графический объект может представлять собой изображение, часть карты, часть видеоролика, часть трехмерной игры и так далее. Следует отметить, что модуль 104 отрисовки выполнен с возможностью обрабатывать графический объект, который будет отображен в различных разрешениях, с разным уровнем детализации, с различными неотображаемыми данными (например, метаданными) или с любым другим изменяющимся параметром отрисовки графического объекта.[58] In general, the rendering module 104 is configured to (i) obtain pixel data associated with a graphic object, the pixel data may be stored in memory 106, and (ii) process the pixel data for rendering and display on the output device 112. The nature of the graphic is not specifically limited. For example, a graphic object may be an image, part of a map, part of a video, part of a three-dimensional game, and so on. It should be noted that the rendering module 104 is configured to process a graphic object that will be displayed in various resolutions, with different levels of detail, with various non-displayable data (for example, metadata) or with any other changing rendering parameter of the graphic object.

[59] В компьютерной системе 100 также предусмотрена разметка 108 виртуальной памяти. Разметка 108 виртуальной памяти поддерживается модулем 104 отрисовки и/или процессором 102. В общем случае, функция разметки 108 виртуальной памяти заключается в предоставлении разметки части памяти (например, адрес или указатель другого типа) в памяти 106, где хранятся пиксельные данные, связанные с конкретным пикселем графического объекта, который будет отрисован модулем 104 отрисовки.[59] The computer system 100 also provides virtual memory tagging 108. Virtual memory tagging 108 is supported by the rendering module 104 and / or processor 102. In general, the virtual memory tagging function 108 is to provide tagging of a portion of the memory (for example, an address or pointer of a different type) in memory 106 where pixel data associated with a particular memory is stored pixel of the graphic object to be rendered by the rendering module 104.

[60] То, как именно организовано и поддерживается разметка 108 виртуальной памяти, будет более подробно описано далее.[60] How exactly the layout of virtual memory 108 is organized and maintained will be described in more detail below.

[61] Процессор 102 выполнен с возможностью выполнять один или несколько программных модулей 110. Один или несколько программных модулей 110 может выполнять различные процедуры и управлять различными компонентами компьютерной системы 100. Данный из одного или нескольких программных модулей 110 может выполнять процедуру управления модулем отрисовки. Как часть процедуры управления модулем отрисовки, данный один из одного или нескольких программных модулей 110 выполнен с возможностью осуществлять: (i) управление разметкой 108 виртуальной памяти, (ii) получение доступа и получение данных (например, пиксельных данных из памяти 106), (iii) получение доступа, получение и реорганизацию данных, хранящихся в разметке 108 виртуальной памяти.[61] The processor 102 is configured to execute one or more program modules 110. One or more program modules 110 may perform various procedures and control various components of the computer system 100. This one of the one or more program modules 110 may perform a drawing module control procedure. As part of the control of the rendering module, this one of one or more program modules 110 is configured to: (i) manage the layout of virtual memory 108, (ii) access and receive data (e.g., pixel data from memory 106), (iii ) accessing, receiving and reorganizing data stored in the virtual memory markup 108.

[62] Конкретнее, в соответствии с вариантами осуществления настоящего технического решения, данный один из одного или нескольких программных модулей 110 выполнен с возможностью осуществлять способ сохранения пиксельных данных в памяти 106 путем реорганизации разметки 108 виртуальной памяти.[62] More specifically, in accordance with embodiments of the present technical solution, this one of one or more program modules 110 is configured to implement a method for storing pixel data in memory 106 by reorganizing virtual memory markup 108.

[63] В первую очередь, данный один из одного или нескольких программных модулей 110 выполнен с возможностью получать доступ к первой части разметки 108 виртуальной памяти для получения пиксельных данных, которые связаны со множеством пикселей графического объекта, хранящегося в первой части разметки 108 виртуальной памяти. Для целей описания, которое будет представлено ниже, следует предположить, что первая часть разметки 108 виртуальной памяти организована в соответствии с известным уровнем техники, например, описанным в патенте US 6924811. На Фиг. 2 представлена часть Фиг. 15, на которой показан вариант осуществления технического решения из патента US 6924811. На Фиг 2 представлена организация разметки 108 виртуальной памяти до выполнения способа, реализованного в соответствии с вариантами осуществления настоящего технического решения.[63] First of all, this one of the one or more program modules 110 is configured to access the first part of the virtual memory markup 108 to obtain pixel data that is associated with a plurality of pixels of a graphic stored in the first part of the virtual memory markup 108. For the purposes of the description that will be presented below, it should be assumed that the first part of the virtual memory markup 108 is organized in accordance with the prior art, for example, as described in US Pat. No. 6,924,811. FIG. 2 shows part of FIG. 15, which shows an embodiment of the technical solution from US Pat. No. 6,924,811. FIG. 2 shows the organization of virtual memory markup 108 before executing a method implemented in accordance with embodiments of the present technical solution.

[64] Множество пикселей, которые формируют графический объект, включает в себя первый пиксель и второй пиксель, первый пиксель и второй пиксель являются последовательно-отрисовываемыми при отображении графического объекта на устройстве 112 вывода. На Фиг. 7 представлен вариант графического объекта 702, который может отображаться на устройстве 112 вывода. На Фиг. 7 показаны (в увеличенном виде) первый пиксель 704, второй пиксель 706, третий пиксель 708 и четвертый пиксель 710. Первый пиксель 704, второй пиксель 706, третий пиксель 708 и четвертый пиксель 710 в представленном порядке являются последовательно-отрисовываемыми. С другой стороны, первый пиксель 704 и четвертый пиксель 710 являются непоследовательно-отрисовываемыми, поскольку между ними находится ряд промежуточных пикселей (второй пиксель 706 и третий пиксель 708). Последнее также применяется, например, ко второму пикселю 706 и четвертому пикселю; а также к первому пикселю 702 и третьему пикселю 708, и так далее.[64] The plurality of pixels that form the graphic object includes a first pixel and a second pixel, the first pixel and the second pixel are sequentially drawn when the graphic is displayed on the output device 112. In FIG. 7 illustrates an embodiment of a graphic object 702 that can be displayed on an output device 112. In FIG. 7 shows (enlarged) the first pixel 704, the second pixel 706, the third pixel 708 and the fourth pixel 710. The first pixel 704, the second pixel 706, the third pixel 708 and the fourth pixel 710 are sequentially drawn in the presented order. On the other hand, the first pixel 704 and the fourth pixel 710 are inconsistently drawn since there are a number of intermediate pixels between them (second pixel 706 and third pixel 708). The latter also applies, for example, to the second pixel 706 and the fourth pixel; as well as to the first pixel 702 and the third pixel 708, and so on.

[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.[65] In FIG. 2, the virtual memory markup 108 is organized in the first array 202 with a predetermined number of pixels 704, 706, 708, 710 (in the presented embodiment, a predetermined number of pixels 704, 706, 708, 710 are four), which are organized in one row 204, 206 from the plurality of rows 207 that form the first array 202, each pixel 704, 706, 708, 710 is stored in the corresponding cell 203. As will be described below, the organization of the plurality of rows 207 in the first array 202 is not taken into account for sequentially drawn relationships of the first pixel 704, 706, 708, 710 and a second pixel 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 вывода - т.е. организованным один за другим, в упорядоченной последовательности.[66] According to various embodiments of the present technical solution, when rendering a graphic on an output device 112, the drawn graphic consists of a plurality of pixels 704, 706, 708, 710. Some of the plurality of pixels 704,706,708,710 are visible on the output device 112. Any two of the visible pixels 704, 706, 708, 710 may be sequentially visible when rendering on the output device 112. Others of the plurality of pixels 704, 706, 708, 710 are invisible on the output device 112. The latter may be referred to as metadata pixels 704, 706, 708, 710 (for example, invisible pixels that provide links and so on). The combination of any two of these pixels 704, 706, 708, 710 (visible or invisible) can be sequentially rendered on the output device 112 - i.e. organized one after another in an ordered sequence.

[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 «перепрыгивает» - т.е. порядок смещается на сдвиг превышающий один ряд и один столбец.[67] The fourth cell 208 of the first row 204 (which is also the last cell of the first row 204) contains the fourth pixel 704, 706, 708, 710 (“3”) and the first cell 210 of the second row 206 (which is also the first cell of the second row 206 ) contains the fifth pixel 704, 706, 708, 710 (“4”). Suppose that the fourth pixel 704, 706, 708, 710 and the fifth pixel 704, 706, 708, 710 are sequentially rendered - i.e. follow one after another when drawing a graphic object. As can be seen in FIG. 2, the organization of the first row 204 and the second row 206 does not take into account this sequentially-drawn relationship. More specifically, number 240 represents the order of cells 203 in the first array 202. The presented order 240 may be the order of filling and / or reading cells 203 in the first array 202. When the fourth cell 208 is moved to the first cell 210, the order 240 “jumps” - t. e. the order is shifted by a shift in excess of one row and one column.

[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 вывода.[68] Therefore, this one of the one or more program modules 110 is configured to identify, in the first array 202, the end of the first row 204 and the beginning of the second row 206 so that the end of the first row 204 contains the first pixel 704, 706, 708, 710 and the beginning of the second row 206 contained a second pixel 704, 706, 708, 710 - thus, the first pixel 704, 706, 708, 710 and the second pixel 704, 706, 708, 710 are sequentially drawn when a graphic object 702 is displayed on the device 112 conclusions.

[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) сдвиг позиции на один столбец.[69] In FIG. 3, 4 and 5, this one of one or more modules 110 is configured to convert the first array 202 into a second array 302, 402, 502, the second array 302, 402, 502 is stored in the second part of the virtual memory markup 108. In accordance with embodiments of the present technical solution, the conversion includes: reorganizing the first row 304, 404, 504 and the second row 306, 406, 506 in the second array 302, 402, 502 so that two cells 303, 403, 503 of the first rows 304, 404, 504 and the second row 306, 406, 506, which contain, respectively, two sequentially-drawn 704, 706, 708, 710 (any two cells 303, 403, 503 are any two 303, 403, 503, excellent from the beginning of the first row 304, 404, 504 and the end of the second row 306, 406, 506), were located at a predetermined offset from each other UGA. In accordance with embodiments of the present technical solution, the predetermined shift is at least one of: (i) a position shift by one row and (ii) a position shift by one column.

[70] В различных вариантах осуществления настоящего технического решения, данный один или несколько программных модулей 110 выполняет реорганизацию первого ряда 304, 404, 504 и второго ряда 304, 404, 504, включая применение алгоритма на основе заполняющей пространство кривой. В различных вариантах осуществления настоящего технического решения, алгоритм на основе заполняющей пространство кривой определяет по меньшей мере один из: порядок записи и порядок считывания множества ячеек 303, 403, 503 во втором массиве 302, 402, 502. Алгоритм на основе заполняющей пространство кривой может представлять собой один из: алгоритм Z-кода и алгоритм кривой Гилберта.[70] In various embodiments of the present technical solution, this one or more program modules 110 performs a reorganization of the first row 304, 404, 504 and the second row 304, 404, 504, including applying an algorithm based on a space-filling curve. In various embodiments of the present technical solution, an algorithm based on a space-filling curve determines at least one of: a recording order and a reading order of a plurality of cells 303, 403, 503 in a second array 302, 402, 502. An algorithm based on a space-filling curve can represent one of: the Z-code algorithm and the Hilbert curve algorithm.

[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».[71] More specifically, in FIG. 3, 340 shows the order of the cells 303 in the second array 302. The presented order 340 may be the order of filling and / or reading the cells 203 in the first array 302. FIG. 3 it can be seen that any two cells 303 (other than cell 303, which is shown as “0” (ie, the first cell), and cells 303, which is shown as “15” (ie, the last cell)) contain accordingly, two sequentially-drawn pixels 704, 706, 708, 710 are at a predetermined offset from each other (a predetermined offset is at least one of: (i) a position shift by one row and (ii) a position shift by one column. In a sense, order 340 “zigzags” across multiple cells 303, creating a continuous fill / count path between the first cell and the last cell of the second array 302. in a sense, a path of order 340 is formed from continuous "vertically" ordered (if you look from left to right, taking into account the orientation shown in Fig. 3) parts that resemble the Latin letter "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».[72] In FIG. 4, number 440 shows the order of cells 403 in the second array 402. The presented order 440 may be the order of filling and / or reading of cells 403 in the second array 402. In FIG. 4 that any two cells 403 (other than cell 403, which is shown as “0” (i.e., the first cell), and cells 403, which are shown as “19” (i.e., the last cell)) contain, accordingly, two sequentially-drawn pixels 704, 706, 708, 710 are at a predetermined offset from each other (a predetermined offset is at least one of: (i) a position shift by one row and (ii) a position shift by one column In a sense, order 440 “zigzags” across multiple cells 403, creating a continuous fill path / count between the first cell and the last cell of the second array 402. in a sense, a path of order 340 is formed from continuous “horizontally” ordered (if you look from left to right, taking into account the orientation shown in Fig. 4) parts that resemble the Latin letter “Z”.

[73] Следует отметить, что показанное на Фиг. 3 и на Фиг. 4, является примерами пользовательского «Z-кода», как алгоритма заполнения пространства для определения порядка 340, 440. Тем не менее, следует иметь в виду, что конкретный вариант осуществления порядка 340, 440 никак конкретно не ограничивается. Важно также иметь в виду, что конкретное число ячеек 303, 403 не ограничивается количеством, представленным на Фиг. 3 и Фиг. 4. Также следует иметь в виду, что число рядов 304, 306, 404, 406 не ограничивается двумя, представленными на Фиг. 3 и Фиг. 4.[73] It should be noted that shown in FIG. 3 and in FIG. 4 are examples of a custom “Z-code” as an algorithm for filling the space to determine the order of 340,440. However, it should be borne in mind that a specific embodiment of the order of 340,440 is not particularly limited. It is also important to keep in mind that the specific number of cells 303, 403 is not limited to the number shown in FIG. 3 and FIG. 4. It should also be borne in mind that the number of rows 304, 306, 404, 406 is not limited to the two shown in FIG. 3 and FIG. four.

[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 не сформирован с помощью повторяющегося узора.[74] Thus, in FIG. 5 shows another embodiment of the present technical solution. Reference numeral 540 represents the order of cells 503 in the second array 502. The presented order 540 may be the order of filling and / or reading of cells 503 in the second array 502. FIG. 5 it can be seen that any two cells 503 (other than cell 503, which is shown as “0” (ie, the first cell), and cell 503, which is shown as “19” (ie, the last cell)) contain, accordingly, two sequentially-drawn pixels 704, 706, 708, 710 are at a predetermined offset from each other (a predetermined offset is at least one of: (i) a position shift by one row and (ii) a position shift by one column In a sense, order 540 runs continuously across multiple cells 503, creating a continuous fill / count path between the first cell 503 and the last cell 503 of the second array 502. In the embodiment of the technical solution shown in Fig. 5 (as opposed to the embodiments shown in Fig. 3 and Fig. 4), a path of order 540 is not formed using a repeating pattern.

[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.[75] This one of one or more program modules 110 is further configured to receive a request to create a duplicate of at least a portion of a graphic object 702, the duplicate has at least one rendering parameter that is different from the rendering parameter of the graphic object 702. The nature of this changing at least one rendering parameter is not specifically limited. For example, at least one rendering parameter may be a visually noticeable parameter, for example, without limiting, image resolution, level of detail, color scheme, and so on. At least one rendering parameter may also be metadata associated with a given pixel 704, 706, 708, 710 of a graphic object 702. In embodiments of the present technical solution, duplicating can be performed by selecting a subset of a plurality of pixels 704,706, 708, 710, a subset of the plurality of pixels 704, 706, 708, 710 includes two pixels 704, 706, 708, 710, which are non-sequentially rendered pixels 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).[76] This one of the one or more program modules 110 is further configured to identify the corresponding parts of the second array 302, 402, 502, which contains rows containing pixels 704, 706, 708, 710 from a subset (which, in turn, includes in itself inconsistently-drawn pixels 704, 706, 708, 710). One or more program modules 110 is further configured to change the identified respective parts to perform a selection process of a subset of a plurality of pixels 704, 706, 708, 710. In some embodiments of the present technical solution, this one of one or more program modules 110 is further configured with the ability to save the thus selected subset of pixels in the memory 106. Additionally, this one of one or more program modules 110 is configured to by the ability to initiate the processing module 104, draw a subset of the pixels 704, 706, 708, 710 on the output device 112 (thereby displaying a modified duplicate of the graphic object 702).

[77] Конкретный технический эффект, который относится по меньшей мере к некоторым вариантам осуществления настоящего технического решения, также может относится к реорганизации первого массива 202 во второй массив 302, 402, 502, который включает в себя, среди прочего, возможность считывать последовательные ячейки 303, 403, 503 (т.е. те ячейки 303, 403, 503, который содержат последовательно-отрисовываемые пиксели 704, 706, 708, 710 графического объекта 702) без «перепрыгивания».[77] A particular technical effect that relates to at least some embodiments of the present technical solution may also relate to the reorganization of the first array 202 into a second array 302, 402, 502, which includes, inter alia, the ability to read sequential cells 303 , 403, 503 (that is, those cells 303, 403, 503 that contain sequentially-drawn pixels 704, 706, 708, 710 of a graphic object 702) without “jumping”.

[78] Описанная выше архитектура способна выполнять способ сохранения информации о пиксельных данных в памяти 106. На Фиг. 6 представлена блок-схема способа 600, реализованного в соответствии с вариантами осуществления настоящего технического решения, не ограничивающими его объем. Следует вспомнить, что пиксельные данные связаны с графическим объектом 702, который отображается на устройстве 112 вывода компьютерной системы 100, пиксельные данные предназначены для отрисовки в графическом объекте 702. Способ 600 может выполняться компьютерной системой 100.[78] The architecture described above is capable of performing a method of storing pixel data information in a memory 106. In FIG. 6 is a flowchart of a method 600 implemented in accordance with embodiments of the present technical solution that does not limit its scope. It should be remembered that the pixel data is associated with a graphic object 702 that is displayed on the output device 112 of the computer system 100, the pixel data is intended to be drawn in the graphic object 702. The method 600 may be performed by the computer system 100.

[79] 602 - получение доступа к первой части разметки виртуальной памяти для получения пиксельных данных, связанных со множеством пикселей графического объекта, которые хранятся в первой части разметки виртуальной памяти, множество пикселей включает в себя первый пиксель и второй пиксель, первый пиксель и второй пиксель расположены как последовательно-отрисовываемые при отображении графического объекта на устройстве вывода; первая часть разметки виртуальной памяти организована в первом массиве с заранее определенным числом пикселей, которые организованы в одном ряду из множества рядов, которые формируют первый массив, организация множества рядов в первом массиве не учитывается для последовательно-отрисовываемой связи первого пикселя и второго пикселя[79] 602 - accessing the first part of the virtual memory markup to obtain pixel data associated with a plurality of pixels of the graphic object that are stored in the first part of the virtual memory markup, the plurality of pixels includes a first pixel and a second pixel, a first pixel and a second pixel arranged as sequentially rendered when displaying a graphical object on the output device; the first part of the virtual memory layout is organized in the first array with a predetermined number of pixels that are organized in one row from the many rows that form the first array, the organization of many rows in the first array is not taken into account for sequentially rendered communication of the first pixel and second pixel

[80] Способ 600 начинается на этапе 602, где компьютерная система 100 получает доступ к части разметки 108 виртуальной памяти для получения пиксельных данных, связанных с множеством пикселей 704, 706, 708, 710 графического объекта 702, хранящегося в первой части разметки 108 виртуальной памяти.[80] The method 600 begins at block 602, where the computer system 100 accesses a portion of the virtual memory markup 108 to obtain pixel data associated with a plurality of pixels 704, 706, 708, 710 of a graphic object 702 stored in the first virtual memory markup 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.[81] The plurality of pixels 704, 706, 708, 710 includes a first pixel 704, 706, 708, 710 and a second pixel 704, 706, 708, 710. The first pixel 704, 706, 708, 710 and the second pixel 704, 706 , 708, 710 are sequentially rendered when a graphical object 702 is displayed on the output device 112. The first part of the virtual memory markup 108 is organized into a first array 202 with a predetermined number of pixels 704, 706, 708, 710, which are arranged in one row 204, 206 from a plurality of rows 204, 206 that form the first array 202, organizing a plurality of rows 204, 206 in the first array 202 is not taken into account for sequentially rendered communication of the first pixel 704, 706, 708, 710 and the second pixel 704, 706, 708, 710.

[82] 604 - идентификация в первом ряду, окончания первого ряда и начала второго ряда таким образом, что окончание первого ряда включает в себя первый пиксель, а начало второго ряда включает в себя второй пиксель[82] 604 - identifies in the first row, the end of the first row and the beginning of the second row so that the end of the first row includes the first pixel, and the beginning of the second row includes the second pixel

[83] Способ 600 далее переходит к этапу 604, где компьютерная система 100 идентифицирует, в первом массиве 202, окончание первого ряда 204 и начало второго ряда 206, таким образом, что окончание первого рядя 204 содержит первый пиксель 704, 706, 708, 710, а начало второго ряда 206 содержит второй пиксель 704, 706, 708, 710.[83] The method 600 then proceeds to step 604, where the computer system 100 identifies, in the first array 202, the end of the first row 204 and the beginning of the second row 206, so that the end of the first row 204 contains the first pixel 704, 706, 708, 710 and the beginning of the second row 206 contains a second pixel 704, 706, 708, 710.

[84] 606 - преобразование первого массива во второй массив, второй массив сохраняется во второй части разметки виртуальной памяти, преобразование включает в себя: реорганизацию первого ряда и второго ряда во втором массиве таким образом, чтобы две ячейки первого ряда и второго ряда включали в себя, соответственно, два последовательно-отрисовываемых пикселя, которые расположены на заранее определенном сдвиге друг от друга, заранее определенный сдвиг представляет собой одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец; две любых ячейки являются любыми двумя ячейками, отличными от начала первого ряда и окончания второго ряда[84] 606 - the conversion of the first array to the second array, the second array is stored in the second part of the virtual memory layout, the conversion includes: reorganizing the first row and second row in the second array so that two cells of the first row and second row include accordingly, two sequentially drawn pixels that are located at a predetermined offset from each other, the predetermined offset is one of: (i) a position shift by one row and (ii) a position shift by one column; any two cells are any two cells other than the beginning of the first row and the end of the second row

[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) сдвиг позиции на один столбец.[85] The method 600 then proceeds to step 606, where the computer system 100 converts the first array 202 into a second array 302, 402, 502, the second array 302, 402, 502 is stored in the second part of the virtual memory markup 108. Step 606 includes: reorganizing the first row 204 and the second row 206 in the second array 302, 402, 502 so that two cells 303, 403, 503 (other than the beginning of the first row 204 and the end of the second row 206) of the first row 204 and the second row 206 included, respectively, two sequentially-drawn pixels 704, 706, 708, 710, which are located at a predetermined offset from each other. In embodiments of method 600, a predetermined shift is at least one of: (i) a position shift by one row and (ii) a position shift by one column.

[86] В некоторых вариантах осуществления способа 600, этап реорганизации первого ряда 204 и второго ряда 206 включает в себя применение алгоритма на основе заполняющей пространство кривой, алгоритм на основе заполняющей пространство кривой предназначен для определения по меньшей мере одного из порядка записи и считывания множества ячеек 303, 403, 503 во втором массиве 302, 402, 502. В некоторых вариантах осуществления способа 600, алгоритм на основе заполняющей пространство кривой представляет собой одно из: алгоритм Z-кода и алгоритм кривой Гилберта. В некоторых вариантах осуществления технического решения, применение алгоритма на основе заполняющей пространство кривой выполняется реверсивно по отношению к тому, как должен работать алгоритм на основе заполняющей пространство кривой.[86] In some embodiments of method 600, the step of reorganizing the first row 204 and second row 206 includes applying an algorithm based on a space-filling curve, an algorithm based on a space-filling curve is used to determine at least one of the write and read order of multiple cells 303, 403, 503 in the second array 302, 402, 502. In some embodiments of method 600, the algorithm based on the space-filling curve is one of: a Z-code algorithm and a Hilbert curve algorithm. In some embodiments of the technical solution, the application of the algorithm based on the space-filling curve is reversed with respect to how the algorithm based on the space-filling curve should work.

[87] 608 - получение запроса на создание дубликата по меньшей мере части графического объекта, дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра графического объекта, создание дубликата выполняется путем выбора подмножества из множества пикселей, подмножество из множества пикселей включает в себя третий пиксель и четвертый пиксель, которые являются непоследовательно-отрисовываемыми пикселями[87] 608 - receiving a request to create a duplicate of at least a part of the graphic object, the duplicate has at least one rendering parameter that is different from the parameter of the graphic object, creating a duplicate is performed by selecting a subset of the set of pixels, the subset of the set of pixels includes the third pixel and the fourth pixel, which are non-sequentially rendered pixels

[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.[88] The method 600 then proceeds to step 608, where the computer system 100 receives a request to duplicate at least a portion of the graphic object 702. The duplicate has at least one rendering parameter that is different from the rendering parameter of the graphic object 702. Duplication is performed by selecting a subset of the plurality of pixels 704, 706, 708, 710, a subset of the plurality of pixels 704, 706, 708, 710 includes a third pixel 704, 706, 708, 710 and a fourth pixel 704, 706, 708, 710, which are inconsistent -drawable pixels 704, 706, 708, 710.

[89] 610 - идентификация соответствующих частей второго массива, соответствующие части являются рядами, на которых расположены третий и четвертый пиксели[89] 610 - identification of the corresponding parts of the second array, the corresponding parts are the rows on which the third and fourth pixels are located

[90] Способ 600 далее переходит к этапу 610, где компьютерная система 100 идентифицирует соответствующие части второго массива 302, 402, 502, соответствующие части являются рядами, в которых содержится третий пиксель 704, 706, 708, 710 и четвертый пиксель 704, 706, 708, 710.[90] The method 600 then proceeds to step 610, where the computer system 100 identifies the corresponding parts of the second array 302, 402, 502, the corresponding parts are rows containing the third pixel 704, 706, 708, 710 and the fourth pixel 704, 706, 708, 710.

[91] В некоторых вариантах осуществления способа 600, этап идентификации соответствующих частей второго массива 302, 402, 502 включает в себя считывание рядов второго массива 302, 402, 502 в порядке 340, 440, 540 считывания, который следует заранее определенному сдвигу.[91] In some embodiments of method 600, the step of identifying the respective parts of the second array 302, 402, 502 includes reading the rows of the second array 302, 402, 502 in the reading order 340, 440, 540, which follows a predetermined shift.

[92] 612 - изменение идентифицированных соответствующих частей для выполнения выбора подмножества из множества пикселей[92] 612 - changing identified relevant parts to perform a selection of a subset of the multiple pixels

[93] Способ 600 далее переходит к этапу 612, где компьютерная система 100 изменяет идентифицированные соответствующие части для выполнения выбора подмножества из множества пикселей 704, 706, 708, 710.[93] The method 600 then proceeds to step 612, where the computer system 100 modifies the identified corresponding parts to select a subset of the plurality of pixels 704, 706, 708, 710.

[94] В некоторых вариантах осуществления способа 600, этап изменения идентифицированных соответствующих частей включает в себя выполнение алгоритма изменения графического объекта. В некоторых вариантах осуществления способа 600, алгоритм изменения графического объекта включает в себя алгоритм Mip-текстурирования. Альтернативно, алгоритм изменения графического объекта может включать в себя другие типы алгоритмов, например, без установления ограничений: анти-алиасинг, анизотропную фильтрацию, улучшенное Mip-текстурирование с анизоторпной фильтрацией, пирамидальную обработку изображений и так далее.[94] In some embodiments of method 600, the step of changing the identified relevant parts includes executing a graphical object change algorithm. In some embodiments of method 600, the graphical object modification algorithm includes a Mip texturing algorithm. Alternatively, an algorithm for changing a graphic object may include other types of algorithms, for example, without imposing restrictions: anti-aliasing, anisotropic filtering, improved Mip-texturing with anisotropic filtering, pyramidal image processing, and so on.

[95] В широком смысле, любой алгоритм или способ, обеспечивающий масштабирование изображения или разметку, может быть использован здесь. Кроме того, следует отметить, что то, как именно инициируется алгоритм изменения графического объекта, никак конкретно не ограничивается. Например, алгоритм изменения графического объекта может быть инициирован с помощью системы веб-отрисовки (например, системы отрисовки веб-браузера); алгоритм изменения графического объекта может быть инициирован приложениями моделирования компьютерной графики, например, Adobe Photoshop™ и Autodesk 3ds Max™.[95] In a broad sense, any algorithm or method for scaling an image or markup can be used here. In addition, it should be noted that exactly how the algorithm for changing a graphic object is initiated is not specifically limited. For example, an algorithm for changing a graphic object can be initiated using a web rendering system (for example, a web browser rendering system); the graphic object modification algorithm can be initiated by computer graphics modeling applications such as Adobe Photoshop ™ and Autodesk 3ds Max ™.

[96] Возможен вариант осуществления способа 600, который дополнительно включает в себя отрисовку дубликата на устройстве 112 вывода. В некоторых вариантах осуществления способа 600, этап отрисовки включает в себя выполнение библиотеки визуализации графики (например, WebGL или OpenGL или DirectX). В этих вариантах осуществления технического решения, заранее определенное число пикселей, которое используется для определения подмножества пикселей, которое будет выбрано на этапе создания дубликата, определяется заранее с помощью WebGL.[96] An embodiment of a method 600 is possible, which further includes rendering a duplicate on an output device 112. In some embodiments of method 600, the rendering step includes executing a graphics rendering library (e.g., WebGL or OpenGL or DirectX). In these embodiments of the technical solution, a predetermined number of pixels that is used to determine the subset of pixels to be selected in the duplicate step is determined in advance using WebGL.

[97] Затем способ 600 завершается.[97] Then, method 600 ends.

[98] В некоторых вариантах осуществления способа 600, способ 600 выполняется программным модулем (т.е. данным одним из одного или нескольких программных модулей 110 для управления памятью 106) компьютерной системы 100.[98] In some embodiments of method 600, method 600 is executed by a software module (ie, one of one or more software modules 110 for managing memory 106) of a computer system 100.

[99] В некоторых вариантах осуществления способа 600, первая разметка 108 виртуальной памяти и вторая разметка 108 виртуальной памяти предназначены для управления памятью 106 компьютерной системы 100. Память 106 может представлять собой видеокарту. В этих вариантах осуществления способа, первая разметка 108 виртуальной памяти и вторая разметка 108 виртуальной памяти хранятся в другом устройстве памяти (не показано), отдельном от видеокарты.[99] In some embodiments of the method 600, the first virtual memory markup 108 and the second virtual memory markup 108 are for managing the memory 106 of the computer system 100. The memory 106 may be a video card. In these embodiments of the method, the first virtual memory markup 108 and the second virtual memory markup 108 are stored in another memory device (not shown) that is separate from the video card.

[100] В некоторых вариантах осуществления способа 600, этап реорганизации первого ряда 204 и второго ряда 206 во втором массиве 302, 402, 502 обеспечивает логически-последовательное считывание пиксельных данных без пиксельного «перепрыгивания».[100] In some embodiments of the method 600, the step of reorganizing the first row 204 and the second row 206 in the second array 302, 402, 502 provides a logical sequential reading of the pixel data without pixel “jumping”.

[101] Соответственно, варианты осуществления настоящего технического решения можно изложить следующим образом, в виде пронумерованных пунктов:[101] Accordingly, embodiments of the present technical solution can be summarized as follows, in the form of numbered paragraphs:

[102] ПУНКТ 1 Способ (600) сохранения в памяти (106) пиксельных данных, связанных с графическим объектом (702), отображаемым на устройстве (112) вывода электронного устройства (100), пиксельные данные предназначены для отрисовки графического объекта (702), способ (600) выполняется электронным устройством (100), способ (600) включает в себя:[102] ITEM 1 A method (600) for storing in memory (106) the pixel data associated with a graphic object (702) displayed on an output device (112) of an electronic device (100), the pixel data is for rendering a graphic object (702), method (600) is performed by an electronic device (100), method (600) includes:

[103] получение (602) доступа к первой части разметки (108) виртуальной памяти для получения пиксельных данных, связанных с множеством пикселей (704, 706, 708, 710) графического объекта (702), хранящегося в первой части разметки (108) виртуальной памяти,[103] obtaining (602) access to the first part of the virtual memory markup (108) to obtain pixel data associated with a plurality of pixels (704, 706, 708, 710) of a graphic object (702) stored in the first virtual markup (108) of the virtual memory memory

[104] множество пикселей (704, 706, 708, 710) включает в себя первый пиксель (704, 706, 708, 710) и второй пиксель (704, 706, 708, 710), первый пиксель (704, 706, 708, 710) и второй пиксель (704, 706, 708, 710) расположены последовательно-отрисовываемо при отображении графического объекта (702) на устройстве (112) вывода;[104] the plurality of pixels (704, 706, 708, 710) includes a first pixel (704, 706, 708, 710) and a second pixel (704, 706, 708, 710), a first pixel (704, 706, 708, 710) and the second pixel (704, 706, 708, 710) are sequentially rendered when displaying a graphic object (702) on the output device (112);

[105] первая часть разметки (108) виртуальной памяти организована в первый массив (202) с заранее определенным числом пикселей (704, 706, 708, 710), которые организованы в один ряд (204, 206) из множества рядов (207), которые формируют первый массив (202), организация множества рядов (207) в первом массиве (202) не учитывается для последовательно-отрисовываемой связи первого пикселя (704, 706, 708, 710) и второго пикселя (704, 706, 708, 710);[105] the first part of the marking (108) of virtual memory is organized into a first array (202) with a predetermined number of pixels (704, 706, 708, 710), which are organized in one row (204, 206) from many rows (207), which form the first array (202), the organization of many rows (207) in the first array (202) is not taken into account for sequentially drawn communication of the first pixel (704, 706, 708, 710) and the second pixel (704, 706, 708, 710) ;

[106] идентификация (604) в первом массиве (202), окончания первого ряда (204) и начала второго ряда (206) таким образом, что окончание первого ряда (204) включает в себя первый пиксель, а начало второго ряда (206) включает в себя второй пиксель[106] identifying (604) in the first array (202), the end of the first row (204) and the beginning of the second row (206) so that the end of the first row (204) includes the first pixel and the beginning of the second row (206) includes a second pixel

[107] преобразование (606) первого массива (202) во второй массив (302, 402, 502), второй массив (302, 402, 502) хранится во второй части разметки (108) виртуальной памяти, преобразование (606) включает в себя:[107] converting (606) the first array (202) to the second array (302, 402, 502), the second array (302, 402, 502) is stored in the second part of the virtual memory markup (108), the conversion (606) includes :

[108] реорганизацию первого ряда (304, 404, 504) и второго ряда (306, 406, 506) во втором массиве таким образом, чтобы две ячейки (303, 403, 503) первого ряда и второго ряда включали в себя, соответственно, два последовательно-отрисовываемых пикселя, которые расположены на заранее определенном сдвиге друг от друга, заранее определенный сдвиг представляет собой одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец; две любых ячейки являются любыми двумя ячейками, отличными от начала первого ряда и окончания второго ряда;[108] the reorganization of the first row (304, 404, 504) and the second row (306, 406, 506) in the second array so that the two cells (303, 403, 503) of the first row and second row included, respectively, two sequentially drawn pixels that are located at a predetermined offset from each other, the predetermined offset is one of: (i) a position shift by one row and (ii) a position shift by one column; any two cells are any two cells other than the beginning of the first row and the end of the second row;

[109] получение (608) запроса на создание дубликата по меньшей мере части графического объекта, дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра графического объекта, создание дубликата выполняется путем выбора подмножества из множества пикселей, подмножество из множества пикселей включает в себя третий пиксель и четвертый пиксель, которые являются непоследовательно-отрисовываемыми пикселями;[109] receiving (608) a request to create a duplicate of at least a part of the graphic object, the duplicate has at least one rendering parameter that is different from the parameter of the graphic object, creating a duplicate is performed by selecting a subset of a plurality of pixels, a subset of a plurality of pixels includes a third pixel and a fourth pixel, which are inconsistently drawn pixels;

[110] идентификация (610) соответствующих частей второго массива, соответствующие части являются рядами, содержащими третий пиксель (704, 706, 708, 710) и четвертый пиксель (704, 706, 708, 710); и[110] identifying (610) the corresponding parts of the second array, the corresponding parts are rows containing a third pixel (704, 706, 708, 710) and a fourth pixel (704, 706, 708, 710); and

[111] изменение (612) идентифицированных соответствующих частей для выполнения выбора подмножества из множества пикселей.[111] changing (612) the identified respective parts to select a subset of the plurality of pixels.

[112] ПУНКТ 2 Способ по п. 1, в котором способ выполняется программным модулем (110) электронного устройства, программный модуль электронного устройства управляет памятью.[112] ITEM 2 The method of claim 1, wherein the method is executed by a software module (110) of an electronic device, a software module of the electronic device controls memory.

[113] ПУНКТ 3 Способ по любому из пп. 1 и 2, в котором реорганизация первого ряда и второго ряда включает в себя применение алгоритма на основе заполняющей пространство кривой, алгоритм на основе заполняющей пространство кривой предназначен для определения по меньшей мере одного из порядка записи и считывания множества ячеек в первом ряду.[113] ITEM 3 The method according to any one of paragraphs. 1 and 2, in which the reorganization of the first row and second row includes the application of an algorithm based on a space-filling curve, an algorithm based on a space-filling curve is designed to determine at least one of the write and read order of a plurality of cells in the first row.

[114] ПУНКТ 4 Способ по п. 3, в котором алгоритм на основе заполняющей пространство кривой представляет собой одно из: алгоритм Z-кода и алгоритм кривой Гилберта.[114] ITEM 4 The method of claim 3, wherein the algorithm based on a space-filling curve is one of: a Z-code algorithm and a Hilbert curve algorithm.

[115] ПУНКТ 5 Способ по любому из пп. 1-4, в котором идентификация соответствующих частей второго массива включает в себя считывание рядов массива в порядке считывания, который следует заранее определенному сдвигу.[115] ITEM 5 The method according to any one of paragraphs. 1-4, in which the identification of the corresponding parts of the second array includes reading the rows of the array in a reading order that follows a predetermined shift.

[116] ПУНКТ 6 Способ по любому из пп. 1-5, в котором изменение идентифицированных соответствующих частей включает в себя выполнение алгоритма изменения графического объекта.[116] ITEM 6 The method according to any one of paragraphs. 1-5, in which the change of the identified relevant parts includes the execution of the algorithm for changing the graphic object.

[117] ПУНКТ 7 Способ по п. 6, в котором алгоритм изменения графического объекта включает в себя алгоритм Mip-текстурирования.[117] ITEM 7 The method of claim 6, wherein the graphical object modification algorithm includes a Mip texturing algorithm.

[118] ПУНКТ 8 Способ по любому из пп. 1-7, который дополнительно включает в себя отрисовку дубликата на устройстве вывода.[118] ITEM 8 The method according to any one of paragraphs. 1-7, which further includes rendering a duplicate on the output device.

[119] ПУНКТ 9 Способ по п. 8, в котором отрисовка включает в себя выполнение по меньшей мере одного из WebGL, OpenGL и DirectX.[119] ITEM 9 The method of claim 8, wherein rendering includes performing at least one of WebGL, OpenGL, and DirectX.

[120] ПУНКТ 10 Способ по п. 9, в котором заранее определенное число пикселей определяется заранее с помощью по меньшей мере одного из WebGL, OpenGL и DirectX.[120] ITEM 10 The method of claim 9, wherein the predetermined number of pixels is determined in advance using at least one of WebGL, OpenGL, and DirectX.

[121] ПУНКТ 11 Способ по любому из пп. 1-10, в котором первая разметка виртуальной памяти и вторая разметка виртуальной памяти предназначены для управления памятью электронного устройства.[121] ITEM 11 The method according to any one of paragraphs. 1-10, in which the first layout of the virtual memory and the second layout of the virtual memory are used to control the memory of the electronic device.

[122] ПУНКТ 12 Способ по п. 11, в котором память представляет собой видеокарту.[122] ITEM 12 The method of claim 11, wherein the memory is a video card.

[123] ПУНКТ 13 Способ по п. 12, в котором первая разметка виртуальной памяти и вторая разметка виртуальной памяти хранятся в другом устройстве памяти, отдельном от видеокарты.[123] ITEM 13 The method of claim 12, wherein the first virtual memory markup and the second virtual memory markup are stored in another memory device separate from the video card.

[124] ПУНКТ 14 Способ по п. 1, в котором реорганизация первого ряда и второго ряда во втором массиве обеспечивает логически-последовательное считывание пиксельных данных без пиксельного «перепрыгивания».[124] ITEM 14 The method according to claim 1, wherein the reorganization of the first row and second row in the second array provides a logical sequential reading of pixel data without pixel “jumping”.

[125] ПУНКТ 15 Система (100) сохранения в памяти пиксельных данных, связанных с графическим объектом, включающая в себя:[125] ITEM 15 A system (100) for storing in memory pixel data associated with a graphic object, including:

[126] процессор (102);[126] processor (102);

[127] память (106), соединенную с процессором;[127] a memory (106) connected to the processor;

[128] устройство (112) вывода, соединенное с процессором;[128] an output device (112) connected to the processor;

[129] модуль (104) отрисовки, соединенный с процессором, устройство вывода и память, модуль отрисовки поддерживающий разметку (108) виртуальной памяти; модуль отрисовки выполнен с возможностью получать информацию о пиксельных данных из памяти, пиксельные данные, которые связаны с графическим объектом (702), отображаются на устройстве вывода, пиксельные данные для отрисовки графического объекта;[129] a rendering module (104) connected to the processor, an output device and memory, a rendering module supporting marking (108) of virtual memory; the rendering module is configured to obtain information about the pixel data from the memory, the pixel data that is associated with the graphic object (702) is displayed on the output device, the pixel data for rendering the graphic object;

[130] процессор выполняет один или несколько программных модулей (110), данный один из одного или нескольких программных модулей выполнен с возможностью выполнять способ по любому из пп. 1-14.[130] the processor executes one or more software modules (110), this one of one or more software modules is configured to perform a method according to any one of claims. 1-14.

[131] Некоторые из этих этапов, а также передача-получение сигнала хорошо известны в данной области техники и поэтому для упрощения были опущены в конкретных частях данного описания. Сигналы могут быть переданы-получены с помощью оптических средств (например, опто-волоконного соединения), электронных средств (например, проводного или беспроводного соединения) и механических средств (например, на основе давления, температуры или другого подходящего параметра).[131] Some of these steps, as well as signal transmission-reception, are well known in the art and, therefore, have been omitted in specific parts of this description for simplicity. Signals can be transmitted-received using optical means (for example, fiber optic connection), electronic means (for example, wired or wireless connection) and mechanical means (for example, based on pressure, temperature or other suitable parameter).

[132] С учетом вышеописанных вариантов осуществления технического решения, которые были описаны и показаны со ссылкой на конкретные этапы, выполненные в определенном порядке, следует иметь в виду, что эти этапы могут быть совмещены, разделены, обладать другим порядком выполнения - все это не выходит за границы настоящего технического решения. Соответственно, порядок и группировка этапов не является ограничением для настоящего технического решения.[132] Given the above-described embodiments of the technical solution that have been described and shown with reference to specific steps performed in a specific order, it should be borne in mind that these steps can be combined, separated, have a different execution order - all this does not work beyond the boundaries of this technical solution. Accordingly, the order and grouping of stages is not a limitation for this technical solution.

[133] Специалисты в данной области техники поймут, что в настоящем описании выражение "получение данных" от пользователя подразумевает получение электронным устройством или другим электронным устройством данных от пользователя в виде электронного (или другого) сигнала. Кроме того, специалисты в данной области техники поймут, что отображение данных пользователю через графический интерфейс пользователя (например, экран компьютерного устройства и тому подобное) может включать в себя передачу сигнала графическому интерфейсу пользователя, этот сигнал содержит данные, которые могут быть обработаны, и по меньшей мере часть этих данных может отображаться пользователю через графический интерфейс пользователя.[133] Those skilled in the art will understand that in the present description, the expression “receiving data” from a user means receiving by an electronic device or other electronic device data from the user in the form of an electronic (or other) signal. In addition, those skilled in the art will understand that displaying data to a user through a graphical user interface (for example, a screen of a computer device and the like) may include transmitting a signal to the graphical user interface, this signal contains data that can be processed, and at least a portion of this data may be displayed to the user via a graphical user interface.

[134] Важно иметь в виду, чварианты осуществления настоящего технического решения могут быть выполнены с проявлением и других технических результатов.[134] It is important to keep in mind that the options for implementing this technical solution can be performed with the manifestation of other technical results.

[135] Модификации и улучшения вышеописанных вариантов осуществления настоящего технического решения будут ясны специалистам в данной области техники. Предшествующее описание представлено только в качестве примера и не несет никаких ограничений. Таким образом, объем настоящего технического решения ограничен только объемом прилагаемой формулы изобретения.[135] Modifications and improvements to the above-described embodiments of the present technical solution will be apparent to those skilled in the art. The preceding description is provided as an example only and is not subject to any restrictions. Thus, the scope of the present technical solution is limited only by the scope of the attached claims.

Claims (38)

1. Способ сохранения в памяти пиксельных данных, связанных с графическим объектом, отображаемым на устройстве вывода электронного устройства, пиксельные данные предназначены для отрисовки графического объекта, способ выполняется электронным устройством, способ включает в себя:1. A method of storing in memory pixel data associated with a graphical object displayed on an output device of an electronic device, pixel data is used to draw a graphical object, the method is performed by an electronic device, the method includes: получение доступа к первой части разметки виртуальной памяти для получения пиксельных данных, связанных с множеством пикселей графического объекта, хранящегося в первой части разметки виртуальной памяти,accessing the first part of the virtual memory markup to obtain pixel data associated with a plurality of pixels of a graphic object stored in the first part of the virtual memory markup, множество пикселей включает в себя первый пиксель и второй пиксель, первый пиксель и второй пиксель расположены последовательно-отрисовываемо, когда графический объект отображается на устройстве вывода;the plurality of pixels includes a first pixel and a second pixel, the first pixel and the second pixel are sequentially drawn when the graphic is displayed on the output device; первая часть разметки виртуальной памяти организована в первый массив с заранее определенным числом пикселей, которые организованы в один ряд из множества рядов, которые формируют первый массив, организация множества рядов в первом массиве не учитывается для последовательно-отрисовываемой связи первого пикселя и второго пикселя;the first part of the virtual memory markup is organized into a first array with a predetermined number of pixels, which are arranged in one row from a plurality of rows that form the first array, the organization of a plurality of rows in the first array is not taken into account for sequentially drawn communication of the first pixel and second pixel; идентификацию в первом ряду, окончания первого ряда и начала второго ряда таким образом, что окончание первого ряда включает в себя первый пиксель, а начало второго ряда включает в себя второй пиксель;identification in the first row, the end of the first row and the beginning of the second row so that the end of the first row includes the first pixel, and the beginning of the second row includes the second pixel; преобразование первого массива во второй массив, второй массив хранится во второй части разметки виртуальной памяти, преобразование включает в себя:the conversion of the first array to the second array, the second array is stored in the second part of the virtual memory markup, the conversion includes: реорганизацию первого ряда и второго ряда во втором массиве таким образом, чтобы две ячейки первого ряда и второго ряда включали в себя, соответственно, два последовательно-отрисовываемых пикселя, которые расположены на заранее определенном сдвиге друг от друга, заранее определенный сдвиг представляет собой одно из: сдвиг позиции на один ряд и сдвиг позиции на один столбец; две любые ячейки являются любыми двумя ячейками, отличными от начала первого ряда и окончания второго ряда;reorganization of the first row and the second row in the second array so that two cells of the first row and the second row include, respectively, two sequentially-drawn pixels that are located at a predetermined offset from each other, the predetermined shift is one of: position shift by one row and position shift by one column; any two cells are any two cells other than the beginning of the first row and the end of the second row; получение запроса на создание дубликата по меньшей мере части графического объекта, дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра графического объекта, создание дубликата выполняется путем выбора подмножества из множества пикселей, подмножество из множества пикселей включает в себя третий пиксель и четвертый пиксель, которые являются непоследовательно-отрисовываемыми пикселями;receiving a request to create a duplicate of at least a part of the graphic object, the duplicate has at least one rendering parameter that is different from the parameter of the graphic object, creating a duplicate is performed by selecting a subset of the set of pixels, the subset of the set of pixels includes a third pixel and a fourth pixel which are inconsistently rendered pixels; идентификацию соответствующих частей второго массива, соответствующие части являются рядами, на которых расположены третий и четвертый пиксели; иidentification of the corresponding parts of the second array, the corresponding parts are the rows on which the third and fourth pixels are located; and изменение идентифицированных соответствующих частей для выполнения выбора подмножества из множества пикселей.changing the identified respective parts to select a subset of the plurality of pixels. 2. Способ по п. 1, в котором способ выполняется программным модулем электронного устройства, модуль электронного устройства управляет памятью.2. The method of claim 1, wherein the method is performed by a software module of an electronic device, the electronic device module controls the memory. 3. Способ по п. 1, в котором реорганизация первого ряда и второго ряда включает в себя применение алгоритма на основе заполняющей пространство кривой, алгоритм на основе заполняющей пространство кривой предназначен для определения по меньшей мере одного из порядка записи и считывания множества ячеек в первом ряду.3. The method according to claim 1, in which the reorganization of the first row and second row includes the application of an algorithm based on a space-filling curve, an algorithm based on a space-filling curve is designed to determine at least one of the write and read order of many cells in the first row . 4. Способ по п. 3, в котором алгоритм на основе заполняющей пространство кривой представляет собой одно из: алгоритм Z-кода и алгоритм кривой Гилберта.4. The method of claim 3, wherein the algorithm based on a space-filling curve is one of: a Z-code algorithm and a Hilbert curve algorithm. 5. Способ по п. 1, в котором идентификация соответствующих частей второго массива включает в себя считывание рядов массива в порядке считывания, который следует заранее определенному сдвигу.5. The method of claim 1, wherein identifying the corresponding parts of the second array includes reading the rows of the array in a reading order that follows a predetermined shift. 6. Способ по п. 1, в котором изменение идентифицированных соответствующих частей включает в себя выполнение алгоритма изменения графического объекта.6. The method according to claim 1, wherein changing the identified relevant parts includes executing an algorithm for changing a graphic object. 7. Способ по п. 6, в котором алгоритм изменения графического объекта представляет собой один из: алгоритм MIP-текстурирования, алгоритм анти-алиасинга, алгоритм анизотропной фильтрации, улучшенное MIP-текстурирование с алгоритмом анизотропной фильтрации и алгоритм пирамидальной обработки изображений.7. The method according to claim 6, in which the algorithm for changing the graphic object is one of: the MIP texturing algorithm, the anti-aliasing algorithm, the anisotropic filtering algorithm, the improved MIP texturing with the anisotropic filtering algorithm, and the pyramidal image processing algorithm. 8. Способ по п. 1, который дополнительно включает в себя отрисовку дубликата на устройстве вывода.8. The method according to claim 1, which further includes rendering a duplicate on the output device. 9. Способ по п. 8, в котором отрисовка включает в себя выполнение по меньшей мере одного из WebGL, OpenGL и DirectX.9. The method of claim 8, wherein rendering includes performing at least one of WebGL, OpenGL, and DirectX. 10. Способ по п. 9, в котором заранее определенное число пикселей определяется заранее с помощью по меньшей мере одного из WebGL, OpenGL и DirectX.10. The method of claim 9, wherein the predetermined number of pixels is determined in advance using at least one of WebGL, OpenGL, and DirectX. 11. Способ по п. 1, в котором первая разметка виртуальной памяти и вторая разметка виртуальной памяти предназначены для управления памятью электронного устройства.11. The method according to p. 1, in which the first layout of the virtual memory and the second layout of the virtual memory are used to control the memory of the electronic device. 12. Способ по п. 11, в котором память представляет собой видеокарту.12. The method of claim 11, wherein the memory is a video card. 13. Способ по п. 12, в котором первая разметка виртуальной памяти и вторая разметка виртуальной памяти хранятся в другом устройстве памяти, отдельном от видеокарты.13. The method according to p. 12, in which the first layout of the virtual memory and the second layout of the virtual memory are stored in another memory device separate from the video card. 14. Способ по п. 1, в котором реорганизация первого ряда и второго ряда во втором массиве обеспечивает логически-последовательное считывание пиксельных данных без пиксельного «перепрыгивания».14. The method according to p. 1, in which the reorganization of the first row and second row in the second array provides a logical sequential reading of pixel data without pixel "jumping". 15. Система сохранения в памяти пиксельных данных, связанных с графическим объектом, включающая в себя:15. A system for storing in memory pixel data associated with a graphic object, including: процессор;CPU; память, соединенную с процессором;memory connected to the processor; устройство вывода, соединенное с процессором;an output device connected to the processor; модуль отрисовки, соединенный с процессором, устройство вывода и память, модуль отрисовки поддерживает разметку виртуальной памяти; модуль отрисовки выполнен с возможностью получать информацию о пиксельных данных из памяти, пиксельные данные, которые связаны с графическим объектом, отображаются на устройстве вывода, пиксельные данные для отрисовки графического объекта;a rendering module connected to the processor, an output device and memory, a rendering module supports marking of virtual memory; the rendering module is configured to obtain information about the pixel data from the memory, the pixel data that is associated with the graphic object is displayed on the output device, the pixel data for rendering the graphic object; процессор выполняет один или несколько программных модулей, данный один из одного или нескольких программных модулей выполнен с возможностью осуществлять:the processor executes one or more software modules, this one of one or more software modules is configured to: получение доступа к первой части разметки виртуальной памяти для получения пиксельных данных, связанных с множеством пикселей графического объекта, хранящегося в первой части разметки виртуальной памяти,accessing the first part of the virtual memory markup to obtain pixel data associated with a plurality of pixels of a graphic object stored in the first part of the virtual memory markup, множество пикселей включает в себя первый пиксель и второй пиксель, первый пиксель и второй пиксель расположены последовательно-отрисовываемо, когда графический объект отображается на устройстве вывода;the plurality of pixels includes a first pixel and a second pixel, the first pixel and the second pixel are sequentially drawn when the graphic is displayed on the output device; первая часть разметки виртуальной памяти организована в первый массив с заранее определенным числом пикселей, которые организованы в один ряд из множества рядов, которые формируют первый массив, организация множества рядов в первом массиве не учитывается для последовательно-отрисовываемой связи первого пикселя и второго пикселя;the first part of the virtual memory markup is organized into a first array with a predetermined number of pixels, which are arranged in one row from a plurality of rows that form the first array, the organization of a plurality of rows in the first array is not taken into account for sequentially drawn communication of the first pixel and second pixel; идентификацию в первом ряду, окончания первого ряда и начала второго ряда таким образом, что окончание первого ряда включает в себя первый пиксель, а начало второго ряда включает в себя второй пиксель;identification in the first row, the end of the first row and the beginning of the second row so that the end of the first row includes the first pixel, and the beginning of the second row includes the second pixel; преобразование первого массива во второй массив, второй массив хранится во второй части разметки виртуальной памяти, преобразование включает в себя:the conversion of the first array to the second array, the second array is stored in the second part of the virtual memory markup, the conversion includes: реорганизацию первого ряда и второго ряда во втором массиве таким образом, чтобы две ячейки первого ряда и второго ряда включали в себя, соответственно, два последовательно-отрисовываемых пикселя, которые расположены на заранее определенном сдвиге друг от друга, заранее определенный сдвиг представляет собой одно из: сдвиг позиции на один ряд и сдвиг позиции на один столбец; две любые ячейки являются любыми двумя ячейками, отличными от начала первого ряда и окончания второго ряда;reorganization of the first row and the second row in the second array so that two cells of the first row and the second row include, respectively, two sequentially-drawn pixels that are located at a predetermined offset from each other, the predetermined shift is one of: position shift by one row and position shift by one column; any two cells are any two cells other than the beginning of the first row and the end of the second row; получение запроса на создание дубликата по меньшей мере части графического объекта, дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра графического объекта, создание дубликата выполняется путем выбора подмножества из множества пикселей, подмножество из множества пикселей включает в себя третий пиксель и четвертый пиксель, которые являются непоследовательно-отрисовываемыми пикселями;receiving a request to create a duplicate of at least a part of the graphic object, the duplicate has at least one rendering parameter that is different from the parameter of the graphic object, creating a duplicate is performed by selecting a subset of the set of pixels, the subset of the set of pixels includes a third pixel and a fourth pixel which are inconsistently rendered pixels; идентификацию соответствующих частей второго массива, соответствующие части являются рядами, на которых расположены третий и четвертый пиксели; иidentification of the corresponding parts of the second array, the corresponding parts are the rows on which the third and fourth pixels are located; and изменение идентифицированных соответствующих частей для выполнения выбора подмножества из множества пикселей.changing the identified respective parts to select a subset of the plurality of pixels.
RU2016104499A 2016-02-11 2016-02-11 Method and system for storing in-memory pixel data associated with graphic object RU2632415C2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2016104499A RU2632415C2 (en) 2016-02-11 2016-02-11 Method and system for storing in-memory pixel data associated with graphic object

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2016104499A RU2632415C2 (en) 2016-02-11 2016-02-11 Method and system for storing in-memory pixel data associated with graphic object

Publications (2)

Publication Number Publication Date
RU2016104499A RU2016104499A (en) 2017-08-16
RU2632415C2 true RU2632415C2 (en) 2017-10-04

Family

ID=59633166

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2016104499A RU2632415C2 (en) 2016-02-11 2016-02-11 Method and system for storing in-memory pixel data associated with graphic object

Country Status (1)

Country Link
RU (1) RU2632415C2 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781200A (en) * 1996-08-08 1998-07-14 Ulsi Systems Tile memory mapping for increased throughput in a dual bank access DRAM
US6724396B1 (en) * 2000-06-01 2004-04-20 Hewlett-Packard Development Company, L.P. Graphics data storage in a linearly allocated multi-banked memory
US6924811B1 (en) * 2000-11-13 2005-08-02 Nvidia Corporation Circuit and method for addressing a texture cache
JP2006163792A (en) * 2004-12-07 2006-06-22 Nissan Motor Co Ltd Image generating device and method for vehicle
RU2542928C2 (en) * 2010-09-30 2015-02-27 Эппл Инк. System and method for processing image data using image signal processor having final processing logic

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781200A (en) * 1996-08-08 1998-07-14 Ulsi Systems Tile memory mapping for increased throughput in a dual bank access DRAM
US6724396B1 (en) * 2000-06-01 2004-04-20 Hewlett-Packard Development Company, L.P. Graphics data storage in a linearly allocated multi-banked memory
US6924811B1 (en) * 2000-11-13 2005-08-02 Nvidia Corporation Circuit and method for addressing a texture cache
JP2006163792A (en) * 2004-12-07 2006-06-22 Nissan Motor Co Ltd Image generating device and method for vehicle
RU2542928C2 (en) * 2010-09-30 2015-02-27 Эппл Инк. System and method for processing image data using image signal processor having final processing logic

Also Published As

Publication number Publication date
RU2016104499A (en) 2017-08-16

Similar Documents

Publication Publication Date Title
CN103838813B (en) Kernel occupies the system and method that medical image is checked
RU2583730C2 (en) Adaptive image rendering and use of impostor image
KR101627169B1 (en) System for authorting and providing augmented reality cotents
US10620816B2 (en) System for displaying elements of a scrollable list
Dorier et al. Damaris/viz: a nonintrusive, adaptable and user-friendly in situ visualization framework
CA2886429C (en) Method for partitioning, managing and displaying a collaboration space and interactive input system employing same
US20170177547A1 (en) Dynamic Content Layout Generator
TWI376641B (en) Multi-threads vertex shader, graphics processing unit, and flow control method thereof
RU2632128C1 (en) Method and system of downloading image fragments to client device
US20170004089A1 (en) Patch memory system
US9026900B1 (en) Invisible overlay for dynamic annotation
RU2632150C1 (en) Method and system of downloading the image to the customer's device
US20130346696A1 (en) Method and apparatus for providing shared caches
CN112732975A (en) Object tracking method and device, electronic equipment and system
CN106569805A (en) Canvas storage/graph drawing method and equipment
US20140331145A1 (en) Enhancing a remote desktop with meta-information
CN112530549B (en) Image display method, device and computer equipment
RU2632415C2 (en) Method and system for storing in-memory pixel data associated with graphic object
US9715715B2 (en) Efficient cache preloading
US8688918B2 (en) Program converting apparatus, program converting method, and medium
CN115170695A (en) Method and device for generating chart picture, electronic equipment and storage medium
JP6160664B2 (en) Information processing apparatus, server, information processing system, processing method thereof, and program
Jung et al. Fast and efficient vertex data representations for the web
EP2821928A2 (en) Method and system for limiting output results in a mobile telecommunication system
US8605101B2 (en) Apparatus and method of reading texture data for texture mapping