1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-26 10:19:45 +03:00
occt/samples/mfc/standard/04_Viewer3d/src/ShadingModelDlg.cpp
kgv 8625ef7e94 0025282: Visualization, OpenGl_PrimitiveArray - provide built-in GLSL programs as alternative to FFP
Enumerations Visual3d_TypeOfModel, V3d_TypeOfShadingModel.
- Remove unused values V3d_MULTICOLOR, V3d_HIDDEN, Visual3d_TOM_INTERP_COLOR.
- Add per-pixel shading mode - V3d_PHONG, Visual3d_TOM_FRAGMENT.

Draw Harness command vrenderparams.
Add option -shadingModel to setup Shading Model.

OpenGl_Caps::ffpEnable - new option to switch FFP/built-in GLSL programs.
OpenGl_ShaderManager - add built-in GLSL programs.

Draw Harness command vcaps.
- Fix command syntax to meet coding rules.
- Add option -ffp to activate/disable built-in GLSL programs.

GLSL API changes.
- Rename vertex attribute occColor -> occVertColor.
- Introduce vec4 occColor uniform variable for light-less shaders.
- Introduce float occPointSize uniform variable for marker programs.

OpenGl_VertexBuffer::bindAttribute() - activate normalization for non-GL_FLOAT types,
since color attribute is defined as 32-bit vector of 4 unsigned byte values.

OpenGl_Context - add methods SetColor4fv() and SetPointSize()
for parameters redirection to active GLSL program
(as alternative to glColor4fv() and glPointSize()).

OpenGl_ShaderProgram - define default precision for float types
in Fragment Shader within OpenGL ES 2.0+ context.

OpenGl_AspectMarker, initialize Aspect_TOM_O_POINT display list
in the same way as sprite texture.

OpenGl_Texture, do not use sized internal formats on OpenGL ES.
2014-10-02 14:29:19 +04:00

71 lines
1.7 KiB
C++
Executable File

// ShadingModelDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Viewer3dApp.h"
#include "ShadingModelDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CShadingModelDlg dialog
CShadingModelDlg::CShadingModelDlg(Handle_V3d_View Current_V3d_View, CWnd* pParent /*=NULL*/)
: CDialog(CShadingModelDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CShadingModelDlg)
myCurrent_V3d_View=Current_V3d_View;
//}}AFX_DATA_INIT
}
void CShadingModelDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CShadingModelDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CShadingModelDlg, CDialog)
//{{AFX_MSG_MAP(CShadingModelDlg)
ON_BN_CLICKED(IDC_SHADINGMODEL_COLOR, OnShadingmodelColor)
ON_BN_CLICKED(IDC_SHADINGMODEL_FLAT, OnShadingmodelFlat)
ON_BN_CLICKED(IDC_SHADINGMODEL_GOURAUD, OnShadingmodelGouraud)
ON_BN_CLICKED(IDC_SHADINGMODEL_PHONG, OnShadingmodelPhong)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CShadingModelDlg message handlers
void CShadingModelDlg::OnShadingmodelColor()
{
myCurrent_V3d_View->SetShadingModel(V3d_COLOR);
myCurrent_V3d_View->Update();
}
void CShadingModelDlg::OnShadingmodelFlat()
{
myCurrent_V3d_View->SetShadingModel(V3d_FLAT);
myCurrent_V3d_View->Update();
}
void CShadingModelDlg::OnShadingmodelGouraud()
{
myCurrent_V3d_View->SetShadingModel(V3d_GOURAUD);
myCurrent_V3d_View->Update();
}
void CShadingModelDlg::OnShadingmodelPhong()
{
myCurrent_V3d_View->SetShadingModel(V3d_PHONG);
myCurrent_V3d_View->Update();
}