DirectX: can't render a model from CMO - directx

I'm trying to draw a model using DirectX (following this tutorial: https://github.com/Microsoft/DirectXTK/wiki/Rendering-a-model?fbclid=IwAR3A0mw9rzjJHrN3mwgSb9a6oKqNgiDiAnnfkVLIIQVca9Og6cvfvscuVfE).
I've add my model.cmo file with Add existing item and following line to Game::CreateDevice()
m_model = Model::CreateFromCMO(m_d3dDevice.Get(), L"model.cmo", *m_fxFactory);
I can't build and run my project because of exception on aboved line
Unhandled exception at 0x747318A2 in directX_project.exe: Microsoft C++ exception: std::exception at memory location 0x00B3F738. occurred
I will appreciate any tips on how to resolve or debug that issue

You should enable "break on C++ exception" for the debugger as indicated in the instructions here for std::exception so you can see exactly what code triggered the exception.
Note that more recent versions of the DirectX Tool Kit provide more debug output for those kinds of failures which are probably 'file not found' or similar issue.
The DirectX Tool Kit also implements the what method for it's C++ exceptions, so you can use this code to get more detail:
try
{
m_model = Model::CreateFromCMO(m_d3dDevice.Get(), L"model.cmo", *m_fxFactory);
}
catch (std::exception& ex)
{
std::cout << ex.what();
// Do some error handling here or call throw to re-throw it
}

Related

Exception thrown in SurfaceImageSource.as()

I'm back to C++ after a 31-year absence and have spent the last few months learning everything I can about Windows app development, UWP, C++/WinRT, DirectX, WinUI 3, XAML, etc. All within Visual Studio 2022 Community.
I'm currently working on creating an app template that brings together DirectX and WinUI 3, allowing me to draw on a surface within XAML/UI3. So far I've been able to create separate apps with each component (modifying existing Microsoft templates), but I'm struggling a bit bringing them all together.
The closest example I've found (using C++/WinRT) is the "DirectX and XAML interop" tutorial. I copied the example into my WinUI 3 project and it compiles no errors and the UI runs fine until I click on the button that invokes the tutorial code. Then it crashes trying to create a winrt::com_ptr to the SurfaceImageSource. I've spent a couple of days now trying to figure out why. The code in question is :
(C++/WinRT)
SurfaceImageSource surfaceImageSource( 500, 500 ) ;
winrt :: com_ptr <::ISurfaceImageSourceNativeWithD2D> sisNativeWithD2D {
surfaceImageSource.as <::ISurfaceImageSourceNativeWithD2D> () } ;
If I replace "surfaceImageSource.as" with "surfaceImageSource.try_as" the call returns, but .get() on the com_ptr returns nullptr. So it looks like internally, QueryInterface is not succeeding.
Any help with this would be greatly appreciated since I don't know where to go from here.
Thanks.
*** EDIT *** : additional information added per IInspectable's comment
Thanks IInspectable for your help. I can reproduce this with the following minimal setup :
1 - Create a new project from "Blank App, Packaged (WinUI 3 in Desktop)" C++/WinRT template. This project creates a blank window with a UI3 "Click Me" button in its center.
2 - In the file "MainWindow.xaml.cpp" :
a - at the top, add :
#include <windows.ui.xaml.media.dxinterop.h>
#include <winrt/Microsoft.UI.Xaml.Media.Imaging.h>
using namespace winrt::Microsoft::UI::Xaml::Media::Imaging;
b - further down, in the method "MainWindow::myButton_Click()" add the two lines mentioned earlier :
SurfaceImageSource surfaceImageSource(500, 500);
winrt::com_ptr <::ISurfaceImageSourceNativeWithD2D> sisNativeWithD2D{
surfaceImageSource.as <::ISurfaceImageSourceNativeWithD2D>() };
3 - that's it. Rebuild and the program crashes on the button click.
I put a breakpoint between the two lines above.
I then put another breakpoint in "Generated Files\winrt\base.h" on first line of "struct IUnknown :: as()":
template <typename To>
auto as() const
{ (breakpoint here)
return impl::as<To>(m_ptr);
}
When I continue execution, the program crashes immediately before returning to the next line of myButton_Click() (as far as I can determine).
Debug Output
'My_WinUI_3_project_4.exe' (Win32): Loaded 'C:\Program Files\WindowsApps\Microsoft.WindowsAppRuntime.1.1_1004.584.2120.0_x64__8wekyb3d8bbwe\Microsoft.DirectManipulation.dll'.
onecoreuap\windows\frameworkudk\dxprivatescommon.cpp(53)\Microsoft.Internal.FrameworkUdk.dll!00007FFFABE09BC5: (caller: 00007FFFABE5ED0D) ReturnHr(1) tid(2508) 80004002 This interface is not supported
onecoreuap\windows\frameworkudk\dxprivatescommon.cpp(53)\Microsoft.Internal.FrameworkUdk.dll!00007FFFABE09BC5: (caller: 00007FFFABE5ED0D) ReturnHr(2) tid(2508) 80004002 This interface is not supported
onecoreuap\windows\frameworkudk\dxprivatescommon.cpp(53)\Microsoft.Internal.FrameworkUdk.dll!00007FFFABE09BC5: (caller: 00007FFFABE5ED0D) ReturnHr(3) tid(3670) 80004002 This interface is not supported
'My_WinUI_3_project_4.exe' (Win32): Loaded 'C:\Windows\System32\cabinet.dll'.
'My_WinUI_3_project_4.exe' (Win32): Loaded 'C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\XamlDiagnostics\x64\WinUI3\Microsoft.VisualStudio.DesignTools.WinUITap.dll'.
Microsoft.UI.Xaml.dll!00007FFF8DAF3D45: (caller: 00007FFF90651CAF) ReturnHr(1) tid(2508) 80070057 Incorrect parameter.
Microsoft.UI.Xaml.dll!00007FFF8DAF3D45: (caller: 00007FFF90651CAF) ReturnHr(2) tid(2508) 80070057 Incorrect parameter.
Microsoft.UI.Xaml.dll!00007FFF8DAF3D45: (caller: 00007FFF90651CAF) ReturnHr(3) tid(2508) 80070057 Incorrect parameter.
Exception thrown at 0x00007FF83C644FD9 (KernelBase.dll) in My_WinUI_3_project_4.exe: WinRT originate error - 0x80004002 : 'This interface is not supported'.
Exception thrown at 0x00007FF83C644FD9 in My_WinUI_3_project_4.exe: Microsoft C++ exception: winrt::hresult_no_interface at memory location 0x0000005C234FA538.
Exception thrown at 0x00007FF83C644FD9 in My_WinUI_3_project_4.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
A breakpoint instruction (__debugbreak() statement or a similar call) was executed in My_WinUI_3_project_4.exe.
Call Stack
My_WinUI_3_project_4.exe!winrt::My_WinUI_3_project_4::implementation::App::{ctor}::__l2::<lambda>(const winrt::Windows::Foundation::IInspectable & __formal, const winrt::Microsoft::UI::Xaml::UnhandledExceptionEventArgs & e) Line 31 C++
My_WinUI_3_project_4.exe!winrt::impl::delegate<winrt::Microsoft::UI::Xaml::UnhandledExceptionEventHandler,void <lambda>(const winrt::Windows::Foundation::IInspectable &, const winrt::Microsoft::UI::Xaml::UnhandledExceptionEventArgs &)>::Invoke(void * sender, void * e) Line 4824 C++
[External Code]
My_WinUI_3_project_4.exe!winrt::impl::consume_Microsoft_UI_Xaml_IApplicationStatics<winrt::Microsoft::UI::Xaml::IApplicationStatics>::Start(const winrt::Microsoft::UI::Xaml::ApplicationInitializationCallback & callback) Line 157 C++
My_WinUI_3_project_4.exe!winrt::Microsoft::UI::Xaml::Application::Start::__l2::<lambda>(const winrt::Microsoft::UI::Xaml::IApplicationStatics & f) Line 12146 C++
My_WinUI_3_project_4.exe!winrt::impl::factory_cache_entry<winrt::Microsoft::UI::Xaml::Application,winrt::Microsoft::UI::Xaml::IApplicationStatics>::call<void <lambda>(const winrt::Microsoft::UI::Xaml::IApplicationStatics &) &>(winrt::Microsoft::UI::Xaml::Application::Start::__l2::void <lambda>(const winrt::Microsoft::UI::Xaml::IApplicationStatics &) & callback) Line 6286 C++
My_WinUI_3_project_4.exe!winrt::impl::call_factory<winrt::Microsoft::UI::Xaml::Application,winrt::Microsoft::UI::Xaml::IApplicationStatics,void <lambda>(const winrt::Microsoft::UI::Xaml::IApplicationStatics &)>(winrt::Microsoft::UI::Xaml::Application::Start::__l2::void <lambda>(const winrt::Microsoft::UI::Xaml::IApplicationStatics &) && callback) Line 6309 C++
My_WinUI_3_project_4.exe!winrt::Microsoft::UI::Xaml::Application::Start(const winrt::Microsoft::UI::Xaml::ApplicationInitializationCallback & callback) Line 12147 C++
[External Code]
This:
#include <windows.ui.xaml.media.dxinterop.h>
should be this:
#include <microsoft.ui.xaml.media.dxinterop.h>
when working with WinUI 3.0 Desktop apps and not UWP.

Uncaught lua exception error in zerobrane, any solution?

Zerobrane version v1.90
This error is caused after I put the following code into user preference:
styles.indicator.fncall = {fg = {-110,0,0}} --I got this in documentation page of zerobrane
I tried to reinstall zerobrane(both portable version and .exe verison) but the problem is still here.
Screenshot of the error message:
{-110,0,0}
You're passing a negative value as the red value; there's no way that could work (What would it even do?)

How to identify exactly where exception occurred in Jenkins pipeline?

In Jenkins pipeline build, sometimes I've seen null pointer or other exceptions like -
java.lang.NullPointerException: Cannot invoke method trim() on null object
Generally if we run Java program through IDE or command line, if an exception occurs we see at which line number the exception has occurred.
But with Jenkins build output console, it does not show the line number where the exception has occurred.
In this case, based on method name ie trim() from log, I check wherever trim() method is used. But as I've used it at multiple places in same method, it becomes difficult to identify exactly where error has occurred.
Another way is to add echo statements and re-run build and see where it gives this exception but this is time consuming.
Is there any better way/plugin using which I can identify at which line of pipeline code exception has occurred?
I don't really know if it's possible to show the exact line number, but you can wrap your code in try-catch statements and then show the exception info in the catch, like so:
try {
// line with trim()
catch (ex) {
println "Exception while trimming: $ex"
}

Get warnings when programmatically parsing Dart file with analyzer_experimental

I am using analyzer_experimental to parse a Dart file into a CompilationUnit:
import 'package:analyzer_experimental/analyzer.dart';
var unit;
try {
unit = parseDartFile(path);
} on AnalyzerErrorGroup catch(e){
print(e);
}
The above code will catch any parsing errors encountered.
I am also interested in seeing any warnings associated with the file (e.g. 'Undefined name "foo"'). I know that the experimental_analyzer library has the capability to generate these warnings when running from the command line but it does not seem to be possible to get the warnings programmatically, without directly referencing classes in the src folder (which seems like a bad idea).
Is there any way to achieve this?
It's likely this package was very incomplete at the time.
There's now an analyzer package on pub and also a (work-in-progress) STDIN/STDOUT Analyzer Service aimed to help making tooling support easier for IDE extension authors.

Simple OpenCV problem

Why I try to run the following OpenCV program, it shows the following error :
ERROR:
test_1.exe - Application Error
The application failed to initialize properly (0x80000003).
Click on OK to terminate the application.
CODE:
#include "cv.h"
#include "highgui.h"
int main()
{
IplImage *img = cvLoadImage("C:\\face.bmp");
cvSetImageROI(img, cvRect(100,100, 100, 100));
cvAddS(img, cvScalar(50), img);
cvResetImageROI(img);
cvShowImage("Test", img);
cvWaitKey(0);
return 0;
}
When i press F5(im using vs2008express), the program encounters a break point...i have attached a picture...dont know, whether, it will help or not.
Error Snapshot Link
It is not that, only this program is producing this error, but also any kind of image manipulation funciton containing (OpenCV)program is resulting in this sitution.
Such as : cvSmooth
one last thing, it there any dedicated OpenCV forum or sth like that?
I am an administrator.So, yes, ive the permission.
a version mismatch.
sorry, i didn't get it?Version mismatch with what?
But, i have found the error using dependency walker.
Warning: At least one module has an unresolved import due to a missing export
function in a delay-load dependent module.
and also found that, it is a common problem, and found some info in the FAQ of DW...
Why am I seeing a lot of applications where MPR.DLL shows up in red under
SHLWAPI.DLL because it is missing a function named WNetRestoreConnectionA?
I also get a "Warning: At least one module has an unresolved import due to
a missing export function in a delay-load dependent module" message.
Function name : WNetRestoreConnectionA
But there is no guideline about how to solve it. Though, they say, it is not a problem.
i googled a little and found a suggestion.It says,
Turn off your compilers setting to assume you are programming for Win9x.
(I just lost which setting but it is not that difficult, use a #define...)
But i have no idea, how to do that in Visual Studio 2008 express.
Any suggestion how to solve it...
This usually indicates a problem with a dll; either you don't have permission, or a version is mismatched. Try running as Administrator to see if it is a permissions problem. If that doesn't help, try using the Dependency Walker.

Resources