캔버스 멋지다! - 페이지 64

 
Vladimir Pastushak :

안녕하세요 여러분, 저는 Canvas에 대한 지식을 심화하고 싶습니다.

하지만 어디서부터 시작해야 할지조차 모르겠습니다. 이제 나는 캔버스가 복잡한 로그 공식과 같은 것이라고 상상합니다.

아래와 같이 캔버스에 버튼을 만드는 방법을 예시로 들어보세요. 이해하려면 코드가 필요합니다.


거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

Canvas에서 크라우드소싱 프로젝트 만들기

니콜라이 셈코 , 2017.05.24 02:20


여기 무슨 일이 있었는지.


버튼을 배경과 전경으로 가져와서 누르는 고정을 설정하거나 고정하지 않을 수 있습니다.

CanvasButton.mq5 샘플 파일은 마우스로 버튼을 드래그하는 기능을 구현합니다. 이렇게 하려면 Ctrl 키를 눌러 파란색 버튼을 이동하고 Shift 키를 눌러 빨간색 버튼을 이동합니다.

왜냐하면 GButton 클래스는 CCanvas 클래스의 후손이며, 예제는 CircleWu 원을 예로 사용하여 CCanvas 클래스의 기능을 사용할 수 있는 가능성을 보여줍니다(이것은 OnInit에서 구현됨). 즉, CCanvas 클래스의 기능을 사용하여 버튼에 텍스트를 쓸 수 있습니다.

물론 이 클래스가 최종 클래스라고 주장하지는 않습니다. 그래픽이 완벽하게 빛나지 않고 3D가 매우 조건적이며 그림자가 구현되지 않고 실행 속도가 최적화되지 않았습니다. 그리고 거친 가장자리가 많고 다양한 검사가 없을 가능성이 큽니다. 따라서 엄격하게 판단하지 마십시오.

물론 시간을 조금 더 투자하면 다음과 같이 할 수 있습니다.


나는 방금 시도했습니다 ... 누군가는 말할 수 있습니다 - 방향을 설정하기 위해.


Canvas.mqh 파일은 m_pixels 배열이 public으로 정의된다는 점에서만 원본과 다릅니다.


 

물론, Canvas 실험에 대한 그의 활발한 열정에 대해 Nikolai에게 경의를 표합니다.) 나는 즐겁게 스레드를 읽었습니다. 그리고 코드 예제에 덜 익숙합니다.

물론 현재 구현된 Canvas는 그래픽 프리미티브로 비트맵 배열을 채우는 CPU 바운드 알고리즘입니다. 저것들. 배열 요소를 반복하는 루프를 통해 그리고 그게 다야 ... 그리고 그 사이에 21 년이 지났습니다 ...

실험은 확실히 좋지만 실제 작업에 대한 구현은 아름다울 뿐만 아니라 효과적이어야 합니다. 물론 일부 최고급 8코어에 앉아 있는 경우 이를 무시할 수 있지만 대부분의 소비자에게 PC는 일반적으로 특성 면에서 상당히 평균입니다. 그리고 시장 데이터 시각화가 있는 전체 화면 GUI는 매우 편리하고 아름답더라도 CPU 로드가 75% 미만이면 인기가 없습니다. 그들이 단순히 다른 할 일이 없었기 때문이 아니라 모든 주요 브라우저에서 Canvas 구현에 하드웨어 가속이 도입된 이유입니다.

여기에서 실제로 요점에 도달하면 - MQL5에는 Direct2D(및 DirectWrite)를 위한 일종의 래퍼가 있을 것입니다. 이는 실제로 폭탄이 될 것이며 GUI 분야에서 많은 실용적인 작업의 효율적인 하드웨어 가속 구현의 길을 열어줍니다. 및 데이터 시각화. 이미 DirectX가 있다고 말할 수 있습니다. 그러나 그 중 Direct3D 부분만 표시되며, 이들은 3D 투영, 셰이더 및 기타 3D 속성이며 이는 여전히 실제 사용에 있어 다소 좁은 틈새입니다. 예, 물론 특정 투영 설정과 기타 조작 및 테셀레이션을 통해 Direct3D를 통해 2D 그래픽을 렌더링할 수 있습니다. 그리고 이것은 Direct2D가 오래 전에 구현되었기 때문에 의미가 없습니다.

이런 생각들...
 
그러나 동시에 모든 것이 CPU에 빠르게 그려집니다.

위의 예가 이를 증명합니다. 또한 이미지의 최종 아름다움과 화려함에 대한 엄격한 요구 사항이없는 응용 분야가 있습니다.
 
Codexample :

물론, Canvas 실험에 대한 그의 활발한 열정에 대해 Nikolai에게 경의를 표합니다.) 나는 즐겁게 스레드를 읽었습니다. 그리고 코드 예제에 덜 익숙합니다.

물론 현재 구현된 Canvas는 그래픽 프리미티브로 비트맵 배열을 채우는 CPU 바운드 알고리즘입니다. 저것들. 배열 요소를 반복하는 루프를 통해 그리고 그게 다야 ... 그리고 그 사이에 21 년이 지났습니다 ...

실험은 확실히 좋지만 실제 작업에 대한 구현은 아름다울 뿐만 아니라 효과적이어야 합니다. 물론 일부 최고급 8코어에 앉아 있는 경우 이를 무시할 수 있지만 대부분의 소비자에게 PC는 일반적으로 특성 면에서 상당히 평균입니다. 그리고 시장 데이터 시각화가 있는 전체 화면 GUI는 매우 편리하고 아름답더라도 CPU 로드가 75% 미만이면 인기가 없습니다. 그들이 단순히 다른 할 일이 없었기 때문이 아니라 모든 주요 브라우저에서 Canvas 구현에 하드웨어 가속이 도입된 이유입니다.

여기에서 실제로 요점에 도달하면 - MQL5에는 Direct2D(및 DirectWrite)를 위한 일종의 래퍼가 있을 것입니다. 이는 실제로 폭탄이 될 것이며 GUI 분야에서 많은 실용적인 작업의 효율적인 하드웨어 가속 구현의 길을 열어줍니다. 및 데이터 시각화. 이미 DirectX가 있다고 확실히 말할 수 있습니다. 그러나 그 중 Direct3D 부분만 표시되며, 이들은 3D 투영, 셰이더 및 기타 3D 속성이며 이는 여전히 실제 사용에 있어 다소 좁은 틈새입니다. 예, 물론 특정 투영 설정과 기타 조작 및 테셀레이션을 통해 Direct3D를 통해 2D 그래픽을 렌더링할 수 있습니다. 그리고 이것은 Direct2D가 오래 전에 구현되었기 때문에 의미가 없습니다.

이런 생각들이...

친절한 말씀 감사합니다.
사실 MQ는 이 점에서 훌륭했고 CPU뿐만 아니라 GPU를 사용하여 그래픽 및 계산 도구를 처리했습니다.
OpenCL과 DirectX를 의미합니다.
다음은 CPU, OpenCL(GPU) 및 DirectX(GPU)의 세 가지 버전에서 동일한 그래픽 작업(8개의 무게 중심) 구현을 비교하는 예입니다.

1. CPU -14fps. (Swir2.mq5 스크립트)

2. OpenCL - 초당 162 프레임(컴퓨터에 OpenCL 드라이버를 설치해야 함) (스크립트 Swirl2_OCL.mq5)

3. DirectX - 초당 37프레임. (스크립트 Swirl2_GPU.mq5)


그래서 우울하지 않습니다.
최대 성능이 필요한 경우 그래픽 카드를 사용할 수 있습니다.
이 테스트는 Intel® HD Graphics 620 그래픽 카드가 약한 다소 약한 노트북에서 수행되었습니다.
비디오 카드의 성능을 사용하면 성능이 상당히 향상된다는 사실에도 불구하고 그래픽 출력에 CPU를 사용하더라도 MQL5 작업 영역에서 모든 그래픽 작업의 99% 이상을 처리한다는 Renat의 의견에 동의합니다.
내 프레임이 10밀리초 미만이면 GPU에 대해 특별히 신경을 쓰지 않습니다(가끔 유혹적이긴 하지만 기동할 가능성이 있다는 것은 좋은 일입니다).
그리고 10밀리초 안에 예를 들어 다음과 같이 그림자, 부드러움 및 투명도를 표시할 수 있습니다.


GPU에 대한 위협 코드 스파이   이 스레드 , 정말 감사합니다   @로르샤흐   @Serhii Shevchuk  

파일:
Swirl2.mq5  5 kb
Swirl2_OCL.mq5  14 kb
 
여러분, Canvas에서 보간법을 사용하여 그래픽 리소스 크기 조정을 해 본 사람이 있습니까?
 
Nikolay Kositsin :
여러분, Canvas에서 보간법을 사용하여 그래픽 리소스 크기 조정을 해 본 사람이 있습니까?

다음은 예제 코드입니다. 그러나 코드는 완벽하지 않습니다. 이제 나는 다른 일을 할 것입니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

캔버스 멋지다!

니콜라이 셈코 , 2018.03.24 04:13

래스터 스케일링이 있는 스크립트 데모

Ex5 파일에는 상당히 큰 BMP 파일이 리소스로 포함되어 있습니다.



 
Nikolai Semko :

다음은 예제 코드입니다. 그러나 코드는 완벽하지 않습니다. 이제 나는 다른 일을 할 것입니다.


당신이 지금 무엇을 할 것인지는 정말 흥미 롭습니다. 순전히 내 이기적인 이익을 위해 :)

 
Nikolai Semko :

다음은 예제 코드입니다. 그러나 코드는 완벽하지 않습니다. 이제 나는 다른 일을 할 것입니다.


형언할 수 없는 아름다움 :)

 

OpenCL: https://www.mql5.com/ru/forum/162864

DirectX: 표준으로 남은 3D

Вот что можно сделать с OpenCL прямо в терминале MetaTrader 5 без всяких DLL
Вот что можно сделать с OpenCL прямо в терминале MetaTrader 5 без всяких DLL
  • 2016.12.10
  • www.mql5.com
Это демонстрация не только расчетов на GPU в MQL5 коде, но и графических возможностей терминала: Полный исходный код в виде скрипта приложен...
 
Artyom Trishkin :

당신이 지금 무엇을 할 것인지는 정말 흥미 롭습니다. 순전히 내 이기적인 이익을 위해 :)

글쎄, Artem, 그것이 매우 짧다면 이전에 픽셀을 영역을 통해 새로운 스케일의 픽셀에 가중치를 계산하여 정사각형으로 인식했지만 이제는 계산을 통해 원으로 인식합니다. 새로운 척도의 픽셀 중심까지의 거리를 통한 가중치 참여.