<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416254&amp;view=findpost&amp;p=3814073</guid>
        <pubDate>Tue, 05 Nov 2019 12:52:27 +0000</pubDate>
        <title>Изменение текстуры куба и сферы через системный проводник</title>
        <link>https://forum.sources.ru/index.php?showtopic=416254&amp;view=findpost&amp;p=3814073</link>
        <description><![CDATA[iVovan1996: Добрый вечер&#33; Я прохожу текстуры и библиотеку материалов GLMaterialLibrary. У меня есть программа с формой, полотном, геометрическими фигурами (кубом и сферой), источниками освещения и библиотекой материалов. Я сделал меню для куба и сферы с возможностями сфокусироваться на объекте, убрать фокус и поменять текстуру. Моя идея - по нажатии на команду меню открыть стандартный проводник OpenDialog, выбрать нужное изображение и после подтверждения назначить для куба библиотеку материалов, создать у неё новый объект и прописать у него в свойствах текстуры выбранное изображение, причём не напрямую, а через GLMaterialLibrary. Я воспользовался примером из методички, но компилятор выдал ошибки. Подскажите, что и где нужно заменить.<br>
<br>
CPP-файл:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;vcl.h&#62;</div><div class="code_line">#pragma hdrstop</div><div class="code_line">&nbsp;</div><div class="code_line">#include &quot;Unit1.h&quot;</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">#pragma package(smart_init)</div><div class="code_line">#pragma link &quot;GLBaseClasses&quot;</div><div class="code_line">#pragma link &quot;GLCoordinates&quot;</div><div class="code_line">#pragma link &quot;GLCrossPlatform&quot;</div><div class="code_line">#pragma link &quot;GLObjects&quot;</div><div class="code_line">#pragma link &quot;GLScene&quot;</div><div class="code_line">#pragma link &quot;GLWin32Viewer&quot;</div><div class="code_line">#pragma link &quot;GLCadencer&quot;</div><div class="code_line">#pragma link &quot;GLKeyboard&quot;</div><div class="code_line">#pragma link &quot;GLMaterial&quot;</div><div class="code_line">#pragma resource &quot;*.dfm&quot;</div><div class="code_line">TForm1 *Form1;</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">__fastcall TForm1::TForm1(TComponent* Owner)</div><div class="code_line">&nbsp;&nbsp; &nbsp;: TForm(Owner)</div><div class="code_line">{</div><div class="code_line">}</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">void __fastcall TForm1::GoToTheCube1Click(TObject *Sender)</div><div class="code_line">{</div><div class="code_line">GLSceneViewer1-&#62;Camera=GLCamera1;</div><div class="code_line">}</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">void __fastcall TForm1::GoToTheSphere1Click(TObject *Sender)</div><div class="code_line">{</div><div class="code_line">GLSceneViewer1-&#62;Camera=GLCamera2;</div><div class="code_line">}</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">void __fastcall TForm1::NotFocus1Click(TObject *Sender)</div><div class="code_line">{</div><div class="code_line">GLSceneViewer1-&#62;Camera=NULL;</div><div class="code_line">}</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">void __fastcall TForm1::NotFocus2Click(TObject *Sender)</div><div class="code_line">{</div><div class="code_line">GLSceneViewer1-&#62;Camera=NULL;</div><div class="code_line">}</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const double newTime)</div><div class="code_line">{</div><div class="code_line">GLCube1-&#62;Turn(deltaTime*10);</div><div class="code_line">GLSphere1-&#62;Turn(deltaTime*10);</div><div class="code_line">//Движение вперед по клавишам ‘ц’ и’ w’</div><div class="code_line">if (IsKeyDown(&#39;ц&#39;) || IsKeyDown(&#39;w&#39;)) { GLSceneViewer1-&#62;Camera-&#62;Move(2*deltaTime); }</div><div class="code_line">//Движение назад по клавишам ‘ы’ и ‘s’</div><div class="code_line">if (IsKeyDown(&#39;ы&#39;) || IsKeyDown(&#39;s&#39;)) { GLSceneViewer1-&#62;Camera-&#62;Move(-2*deltaTime); }</div><div class="code_line">//Поворот влево по клавишам ‘ф’ и’ a’</div><div class="code_line">if (IsKeyDown(&#39;ф&#39;) || IsKeyDown(&#39;a&#39;)) { GLSceneViewer1-&#62;Camera-&#62;Slide(-2*deltaTime); }</div><div class="code_line">//Поворот вправо по клавишам ‘в’ и ‘d’</div><div class="code_line">if (IsKeyDown(&#39;в&#39;) || IsKeyDown(&#39;d&#39;)) { GLSceneViewer1-&#62;Camera-&#62;Slide(2*deltaTime); }</div><div class="code_line">//Движение вверх по клавишам ‘u’ и ‘г’</div><div class="code_line">if (IsKeyDown(&#39;u&#39;) || IsKeyDown(&#39;г&#39;)) { GLSceneViewer1-&#62;Camera-&#62;Lift(0.01); }</div><div class="code_line">//Движение вниз по клавишам ‘n’ и ‘т’</div><div class="code_line">if (IsKeyDown(&#39;n&#39;) || IsKeyDown(&#39;т&#39;)) { GLSceneViewer1-&#62;Camera-&#62;Lift(-0.01); }</div><div class="code_line">if (IsKeyDown(&#39;c&#39;) || IsKeyDown(&#39;с&#39;)) { GLSceneViewer1-&#62;Camera=GLCamera1; }</div><div class="code_line">if (IsKeyDown(&#39;v&#39;) || IsKeyDown(&#39;м&#39;)) { GLSceneViewer1-&#62;Camera=GLCamera2; }</div><div class="code_line">if (IsKeyDown(&#39;b&#39;) || IsKeyDown(&#39;и&#39;)) { GLSceneViewer1-&#62;Camera=NULL; }</div><div class="code_line">&nbsp;</div><div class="code_line">}</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">void __fastcall TForm1::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TPoint &amp;MousePos, bool &amp;Handled)</div><div class="code_line">{</div><div class="code_line">if(GLSceneViewer1-&#62;MouseInControl==true) GLSceneViewer1-&#62;Camera-&#62;AdjustDistanceToTarget(Power(1.1,-WheelDelta/120));</div><div class="code_line">}</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">&nbsp;</div><div class="code_line">void __fastcall TForm1::LoadImageOnCube1Click(TObject *Sender)</div><div class="code_line">{</div><div class="code_line">if(OpenDialog1-&#62;Execute())</div><div class="code_line">{</div><div class="code_line">GLCube1-&#62;Material-&#62;MaterialLibrary = GLMaterialLibrary1;</div><div class="code_line">GLMaterialLibrary1-&#62;Materials-&#62;Add</div><div class="code_line">{</div><div class="code_line">Name = &#39;CubeTexture&#39;;</div><div class="code_line">Material–&#62;Texture–&#62;Image–&#62;LoadFromFile(OpenDialog1-&#62;FileName);</div><div class="code_line">Material–&#62;Texture–&#62;TextureMode = tmModulate;</div><div class="code_line">Material–&#62;BlendingMode = bmTransparency;</div><div class="code_line">Material–&#62;Texture–&#62;Disabled = False;</div><div class="code_line">}</div><div class="code_line">}</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
H-файл:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#ifndef Unit1H</div><div class="code_line">#define Unit1H</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">#include &#60;System.Classes.hpp&#62;</div><div class="code_line">#include &#60;Vcl.Controls.hpp&#62;</div><div class="code_line">#include &#60;Vcl.StdCtrls.hpp&#62;</div><div class="code_line">#include &#60;Vcl.Forms.hpp&#62;</div><div class="code_line">#include &quot;GLBaseClasses.hpp&quot;</div><div class="code_line">#include &quot;GLCoordinates.hpp&quot;</div><div class="code_line">#include &quot;GLCrossPlatform.hpp&quot;</div><div class="code_line">#include &quot;GLObjects.hpp&quot;</div><div class="code_line">#include &quot;GLScene.hpp&quot;</div><div class="code_line">#include &quot;GLWin32Viewer.hpp&quot;</div><div class="code_line">#include &quot;GLKeyboard.hpp&quot;</div><div class="code_line">#include &quot;Math.hpp&quot;</div><div class="code_line">#include &#60;Vcl.Menus.hpp&#62;</div><div class="code_line">#include &quot;GLCadencer.hpp&quot;</div><div class="code_line">#include &quot;GLMaterial.hpp&quot;</div><div class="code_line">#include &#60;Vcl.Dialogs.hpp&#62;</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">class TForm1 : public TForm</div><div class="code_line">{</div><div class="code_line">__published: &nbsp; &nbsp;// IDE-managed Components</div><div class="code_line">&nbsp;&nbsp; &nbsp;TGLScene *GLScene1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TGLSceneViewer *GLSceneViewer1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TGLCamera *GLCamera1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TGLCube *GLCube1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TGLSphere *GLSphere1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TGLCamera *GLCamera2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TGLLightSource *GLLightSource1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TGLLightSource *GLLightSource2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TMainMenu *MainMenu1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TMenuItem *Cube1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TMenuItem *Sphere1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TMenuItem *GoToTheCube1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TMenuItem *NotFocus1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TMenuItem *GoToTheSphere1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TMenuItem *NotFocus2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TGLCadencer *GLCadencer1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TOpenDialog *OpenDialog1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TGLMaterialLibrary *GLMaterialLibrary1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TMenuItem *LoadImageOnCube1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TMenuItem *LoadImageOnSphere1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;void __fastcall GoToTheCube1Click(TObject *Sender);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void __fastcall GoToTheSphere1Click(TObject *Sender);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void __fastcall NotFocus1Click(TObject *Sender);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void __fastcall NotFocus2Click(TObject *Sender);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void __fastcall GLCadencer1Progress(TObject *Sender, const double deltaTime, const double newTime);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void __fastcall FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TPoint &amp;MousePos, bool &amp;Handled);</div><div class="code_line">&nbsp;&nbsp; &nbsp;void __fastcall LoadImageOnCube1Click(TObject *Sender);</div><div class="code_line">&nbsp;</div><div class="code_line">private: &nbsp; &nbsp;// User declarations</div><div class="code_line">public: &nbsp; &nbsp; // User declarations</div><div class="code_line">&nbsp;&nbsp; &nbsp;__fastcall TForm1(TComponent* Owner);</div><div class="code_line">};</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">extern PACKAGE TForm1 *Form1;</div><div class="code_line">//---------------------------------------------------------------------------</div><div class="code_line">#endif</div></ol></div></div></div></div><br>
<br>
И вдобавок - почему не работает клавиатура, хотя библиотека GLKeyboard везде прописана?<br>
<br>
Ошибки:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Checking project dependencies...</div><div class="code_line">Compiling Project1.cbproj (Debug, Win32)</div><div class="code_line">bcc32 command line for &quot;Unit1.cpp&quot;</div><div class="code_line">&nbsp;&nbsp;c:\program files (x86)\embarcadero\studio.0\bin\bcc32.exe -D_DEBUG -DUSEPACKAGES -n.\Win32\Debug -I&quot;c:\program files </div><div class="code_line">&nbsp;&nbsp;(x86)\embarcadero\studio.0\include\windows\vcl&quot;;&quot;c:\program files (x86)\embarcadero\studio.0\include&quot;;&quot;c:\program files </div><div class="code_line">&nbsp;&nbsp;(x86)\embarcadero\studio.0\include\dinkumware&quot;;&quot;c:\program files (x86)\embarcadero\studio.0\include\windows\crtl&quot;;&quot;c:\program files </div><div class="code_line">&nbsp;&nbsp;(x86)\embarcadero\studio.0\include\windows\sdk&quot;;&quot;c:\program files (x86)\embarcadero\studio.0\include\windows\rtl&quot;;&quot;c:\program files </div><div class="code_line">&nbsp;&nbsp;(x86)\embarcadero\studio.0\include\windows\vcl&quot;;&quot;c:\program files (x86)\embarcadero\studio.0\include\windows\fmx&quot;;</div><div class="code_line">&nbsp;&nbsp;C:\Users\Public\Documents\Embarcadero\Studio.0\hpp\Win32;D:\GLScene\include\win32;C:\Users\Public\Documents\Embarcadero\Studio.0\hpp\Win32 -y </div><div class="code_line">&nbsp;&nbsp;-Q -k -r- -c -tR -tM -tU -tW -C8 -o.\Win32\Debug\Unit1.obj -w-par -Od -v -vi- -H=.\Win32\Debug\Project1.pch -H Unit1.cpp </div><div class="code_line">[bcc32 Error] Unit1.cpp(82): E2235 Member function must be called or its address taken</div><div class="code_line">&nbsp;&nbsp;Full parser context</div><div class="code_line">&nbsp;&nbsp; &nbsp;Unit1.cpp(77): parsing: void _fastcall TForm1::LoadImageOnCube1Click(TObject *)</div><div class="code_line">[bcc32 Error] Unit1.cpp(82): E2379 Statement missing ;</div><div class="code_line">&nbsp;&nbsp;Full parser context</div><div class="code_line">&nbsp;&nbsp; &nbsp;Unit1.cpp(77): parsing: void _fastcall TForm1::LoadImageOnCube1Click(TObject *)</div><div class="code_line">[bcc32 Warning] Unit1.cpp(83): W8098 Multi-character character constant</div><div class="code_line">&nbsp;&nbsp;Full parser context</div><div class="code_line">&nbsp;&nbsp; &nbsp;Unit1.cpp(77): parsing: void _fastcall TForm1::LoadImageOnCube1Click(TObject *)</div><div class="code_line">[bcc32 Error] Unit1.cpp(83): E2129 Character constant too long (or empty)</div><div class="code_line">&nbsp;&nbsp;Full parser context</div><div class="code_line">&nbsp;&nbsp; &nbsp;Unit1.cpp(77): parsing: void _fastcall TForm1::LoadImageOnCube1Click(TObject *)</div><div class="code_line">Failed</div><div class="code_line">Elapsed time: 00:00:04.5</div></ol></div></div></div></div><br>
<br>
Картинки здесь:<br>
<a class='tag-url' href='http://www.cyberforum.ru/attachments/1079318d1572450455' target='_blank'>http://www.cyberforum.ru/attachments/1079318d1572450455</a><br>
<a class='tag-url' href='http://www.cyberforum.ru/attachments/1079319d1572450455' target='_blank'>http://www.cyberforum.ru/attachments/1079319d1572450455</a><br>
<a class='tag-url' href='http://www.cyberforum.ru/attachments/1079320d1572450455' target='_blank'>http://www.cyberforum.ru/attachments/1079320d1572450455</a><br>
<a class='tag-url' href='http://www.cyberforum.ru/attachments/1079321d1572450455' target='_blank'>http://www.cyberforum.ru/attachments/1079321d1572450455</a><br>
<a class='tag-url' href='http://www.cyberforum.ru/attachments/1079322d1572450455' target='_blank'>http://www.cyberforum.ru/attachments/1079322d1572450455</a><br>
<a class='tag-url' href='http://www.cyberforum.ru/attachments/1079323d1572450500' target='_blank'>http://www.cyberforum.ru/attachments/1079323d1572450500</a><br>
<a class='tag-url' href='http://www.cyberforum.ru/attachments/1079324d1572450500' target='_blank'>http://www.cyberforum.ru/attachments/1079324d1572450500</a>]]></description>
        <author>iVovan1996</author>
        <category>Программирование графики</category>
      </item>
	
      </channel>
      </rss>
	