Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Jeka777
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
1

Вывод трёхмерной графики без окна

16.02.2013, 21:24. Просмотров 1454. Ответов 12
Метки нет (Все метки)

Осваивая OpenGL столкнулся с потребностью вывода изображения напрямую на экран, без использования видимого окна. Долго искал в интернете информацию, но ничего особенно вразумительного не нашёл. Те варианты которые есть, настолько тормознутые, что даже учитывая небольшие размеры выводимого изображения, довольно сильно загружают ЦП.
Мне, фактически не важно, как выводить, поверх значков или за ними. Главное - обеспечить передвижение изображения, размером порядка 300х300 пикселей, по всему экрану. А также исключить случайные манипуляции пользователя с окном.
Прошу не более, чем подсказать возможные пути для полноценного решения, при котором программа сможет без помех функционировать, не мешая при этом стабильной работе. Хоть с невидимым окном, хоть с выводом за его пределы (в возможности чего я глубоко сомневаюсь).
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2013, 21:24
Ответы с готовыми решениями:

Выбор редактора трёхмерной графики (3ds Max или Maya)
Подскажите пожалуйста, что лучше 3ds Max или Maya и что будет лучше для новичка.

С какой версии DirectX лучше всего начать освоение трёхмерной графики?
Всем привет. В универе проходим курс С++ программирования и т.к. меня с детства увлекала сама идёя...

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

С помощью псевдо-графики сделать для окна рамку
Сегодня дали задачу одну безумную, толком не объяснив какие операторы использовать надо, и у меня...

Графический интерфейс в Матлабе. Как выводить графики в окна axes?
Добрый вечер всем. Недавно написал программу для интерполирования функции и определения погрешности...

12
zss
Модератор
Эксперт С++
8100 / 7237 / 4505
Регистрация: 18.12.2011
Сообщений: 19,134
Завершенные тесты: 1
16.02.2013, 22:32 2
Для windows приложения через функцию CreateDC(DISPLAY,NULL,NULL,NULL) можно получить контекст экрана и рисовать, соответственно, прямо на экран.
Кроме того, OpenGL тоже имеет режим вывода на весь экран.
0
Kuzia domovenok
2542 / 2223 / 555
Регистрация: 25.03.2012
Сообщений: 8,047
Записей в блоге: 1
Завершенные тесты: 1
16.02.2013, 22:56 3
не понял, тебе на рабочем столе рисовать нужно или просто полноэкранное приложение пишешь?
Полноэкранное приложение демонстрируется, например в уроках от NeHe начиная с первого урока.
0
Jeka777
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
17.02.2013, 09:09  [ТС] 4
Да в том-то и дело, мне нужно чтоб вывод происходил в невидимом окне или, как я уже сказал за его пределами. То есть, изображение выдаётся в определённую область экрана без элементов окна и при этом позволяет одновременно с этим продолжать работать с другими приложениями. Ну я помню ещё в 2000-х годах такие приколы по компьютерам ходили. Где какой-нибудь персонаж в углу экрана торчал.
0
17.02.2013, 09:09
zss
Модератор
Эксперт С++
8100 / 7237 / 4505
Регистрация: 18.12.2011
Сообщений: 19,134
Завершенные тесты: 1
17.02.2013, 11:38 5
Вот пример рисования на экране из диалогового окна.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <windows.h>
#include "resource.h"
int x=0,dx=10;
const int R=20;
int WINAPI fn(HWND hwnd,int cmd,WPARAM wp,LPARAM lp)
{
    switch(cmd)
    {
 
    case WM_INITDIALOG:
        ShowWindow(hwnd,SW_MINIMIZE);// сворачиваем окно
        SetTimer(hwnd,1,25,NULL);// запускаем таймер
        return 1;
    case WM_TIMER:
        {
            HDC hdcscr=CreateDC("DISPLAY",NULL,NULL,NULL);// контекст экрана
            int w=GetDeviceCaps(hdcscr,HORZRES);// ширина экрана
            int h=GetDeviceCaps(hdcscr,VERTRES);// высота экрана
            x+=dx;// пересчитываем координаты движущегося объекта
            if(x>=w/2+100){x=w/2+100;dx=-abs(dx);}
            if(x<=w/2-100){x=w/2-100;dx=abs(dx);}
            Ellipse(hdcscr,x-R,h/2-R,x+R,h/2+R);// рисуем 
            DeleteDC(hdcscr);// удаляем контекст
            return 1;
        }
    case WM_CLOSE:
        EndDialog(hwnd,3);// закрытие приложения, можно alt+F4
        return 1;
    case WM_COMMAND:
        return 0;// обрабатываемых кнопок и меню нет
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            BeginPaint(hwnd, &ps);// в окне ничего не рисуем
            EndPaint(hwnd, &ps);
            return 1;
        }
    }
    return 0;
}
int WINAPI WinMain(HINSTANCE hi,HINSTANCE,LPSTR,int) 
{
    return DialogBox(hi,"SIMPLE",NULL,(DLGPROC)fn); // открыть диалоговое окно, образец которого называется "SIMPLE"
}
0
Tiva
94 / 94 / 21
Регистрация: 25.04.2012
Сообщений: 429
17.02.2013, 13:09 6
насколько я понял топикстартеру нужно что-то вроде заставок из вин2к\хп, где шарики прыгают по верх рабочего стола, или фигуры летают?
0
Jeka777
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
17.02.2013, 13:32  [ТС] 7
Фактически - да, но чтоб вместе с этим оставалась возможность взаимодействовать с другими программами.
Предыдущий пример, кстати, не работает, ибо я не использую Майкрософт Визуал.
0
zss
Модератор
Эксперт С++
8100 / 7237 / 4505
Регистрация: 18.12.2011
Сообщений: 19,134
Завершенные тесты: 1
17.02.2013, 13:37 8
Цитата Сообщение от Jeka777 Посмотреть сообщение
я не использую Майкрософт Визуал
А как же Вы осваиваете OpenGL без MS Visual?
0
Jeka777
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
17.02.2013, 13:41  [ТС] 9
Ну вот так и осваиваю. Пока не пишу ничего крупного, поэтому достаточно даже Dev C++. И это меня сейчас вполне устраивает.
0
Jeka777
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
18.02.2013, 14:06  [ТС] 10
Извиняюсь за то, что поднимаю тему. Но ответа я так и не нашёл. Может кто-нибудь всё же поможет?
0
Kuzia domovenok
2542 / 2223 / 555
Регистрация: 25.03.2012
Сообщений: 8,047
Записей в блоге: 1
Завершенные тесты: 1
18.02.2013, 21:48 11
http://pmg.org.ru/nehe/nehe01.htm
http://nehe.gamedev.net/tutorial/cre...(win32)/13001/
0
Jeka777
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
18.02.2013, 21:52  [ТС] 12
Один вопрос, что вы хотите этим сказать? Лично я все уроки от НеХе уже закончил.
Да, в заголовке темы я объяснил кривовато, но походу объяснения вроде бы всё уже пояснил. Мне надо чтоб изображение двигалось поверх экрана с открытыми приложениями, аки, если не ошибаюсь, по принципу оверлея в ДиркетИксе.
0
ЛезгиноХохол
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 10
04.04.2013, 11:31 13
Извиняюсь за поднятие старой темы, Но присоединяюсь к топикстартеру.
Нужна программа создающая графический объект без стандартного окна Windows.
В качестве примера - программа Ruler из демопримеров для Java.

http://hg.openjdk.java.net/jdk7/jdk7...ler/Ruler.java

ZSS Я сейчас пытаюсь запустить ваш код на microsoft visual studio 2008. Ругается на resource.h. Погуглил, скачал 2 версии. Не подходят (выходит ошибка линкера) Не посоветуете среду или линк где скачать?

Ну и, не сочтите за наглость, есть ли аналогичные функции для X Windows
0
04.04.2013, 11:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2013, 11:31

Можно ли захватить часть (фрагмент) окна для вывода графики openGL
Хочу в WinAPI-проекте сделать заставку на OpenGL, но при захвате контекста и выводе графики...

Паскаль и тетрис без графики
Здравствуйте, у меня возникла проблема, мой мозг окончательео меня подводит. После написаного на...

Вывести графики различных тригонометрических функций в подобласти одного графического окна
10. Вывести графики различных тригонометрических функций в подобласти одного графического окна.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru