Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Jeka777
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 13
#1

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

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

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

Вывод графики в OpenGL - C++
Возможно ли в OpenGL выводить картинку или даже фотографию, в форматах jpeg, png, больших размеров и в хорошем качестве?, сильно ли это...

Вывод текста и графики - C++
Помогите пожалуйст: Написать, с использованием функций API, программу, которая выводит в окно приложения информацию, получаемую из...

Вывод числа в столбик с первой цифры, без массива, без строк - C++
#include <iostream> #include <math.h> using namespace std; void p(long a) { long i=0,z=a; while (z) { ...

Программирование движка для трёхмерной игры - C++
Ребята,нужна помощь. Решил писать игру и понял,что нужен движок. В интернете всё написано слишком заумно. Не могли бы вы разъяснить что...

Вывод на монитор графики, не используя WinAPI - C++
Каким образом можно осуществлять работу с графикой и мультимедиа, не используя функции winapi? Не думаю, что это невозможно, ведь полно...

Каким образом лучше осуществить вывод массива с помощью графики? - C++
Добрый день! Имеется массив размера примерно 1000 на 500. Некоторые ячейки закрашенные, некоторые нет. Каким образом лучше осуществить...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
16.02.2013, 22:32 #2
Для windows приложения через функцию CreateDC(DISPLAY,NULL,NULL,NULL) можно получить контекст экрана и рисовать, соответственно, прямо на экран.
Кроме того, OpenGL тоже имеет режим вывода на весь экран.
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 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 / 1
Регистрация: 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
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 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
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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
Сообщений: 8
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2013, 11:31
Привет! Вот еще темы с ответами:

Создание окна без WinAPI - C++
Хотелось узнать, как создавать окна без использования WinAPI.

Вызвать функцию из внешнего (своего) процесса без окна - C++
Приветствую. Как вызвать функцию из своего другого процесса у которого нет окна?

Как запустить .bat файл без отображения консольного окна - C++
Здравствуйте, у меня есть батник, записывающий данный в файл .txt. Этот батник я запускаю из программы. Как можно подавить консоль? чтобы...

Вывод окна контроля переменных - C++
Где в MS VC 2010 express найти окно контроля переменных ? PS еще мне интересно... вот например допустим тебе лень вспоминать как ты...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.04.2013, 11:31
Ответ Создать тему
Опции темы

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