QString iname;
QString alamp;
uint32_t access_drv = 0;
+ bool lamp_stat = false;
access_drv = p_emu->is_floppy_disk_accessed();
{
for(i = 0; i < (int)using_flags->get_max_drive(); i++) {
alamp.clear();
if(p_emu->is_floppy_disk_inserted(i)) {
if(i == (access_drv - 1)) {
- emit sig_set_access_lamp(i + 10, true);
+ lamp_stat = true;
alamp = QString::fromUtf8("<FONT COLOR=RED>â</FONT>"); // ðŸU+1F4BE Floppy Disk
} else {
- emit sig_set_access_lamp(i + 10, false);
alamp = QString::fromUtf8("<FONT COLOR=BLUE>â</FONT>"); // ðŸU+1F4BE Floppy Disk
}
//tmpstr = alamp;
alamp = QString::fromUtf8("Ã");
}
if(alamp != fd_lamp[i]) {
+ emit sig_set_access_lamp(i + 2, lamp_stat);
emit sig_change_access_lamp(CSP_DockDisks_Domain_FD, i, alamp);
fd_lamp[i] = alamp;
}
emit sig_change_osd(CSP_DockDisks_Domain_FD, i, tmpstr);
fd_text[i] = tmpstr;
}
+ lamp_stat = false;
}
}
#endif
QString alamp;
QString tmpstr;
uint32_t access_drv = 0;
+ bool lamp_stat = false;
access_drv = p_emu->is_quick_disk_accessed();
for(i = 0; i < using_flags->get_max_qd(); i++) {
tmpstr.clear();
if(p_emu->is_quick_disk_inserted(i)) {
if(i == (access_drv - 1)) {
alamp = QString::fromUtf8("<FONT COLOR=RED>â</FONT>"); // ðœãU+1F4BD MiniDisc
+ lamp_stat = true;
} else {
alamp = QString::fromUtf8("<FONT COLOR=BLUE>â</FONT>"); // ðœU+1F4BD MiniDisc
}
if(tmpstr != qd_text[i]) {
emit sig_change_access_lamp(CSP_DockDisks_Domain_QD, i, tmpstr);
qd_text[i] = tmpstr;
+ emit sig_set_access_lamp(i + 10, lamp_stat);
}
+ lamp_stat = false;
}
#endif
}
const _TCHAR *ts = p_emu->get_tape_message(i);
if(ts != NULL) {
tmpstr = QString::fromUtf8(ts);
- tmpstr = QString::fromUtf8("<FONT COLOR=RED>") + tmpstr + QString::fromUtf8("</FONT>");
+ if(p_emu->is_tape_recording(i)) {
+ tmpstr = QString::fromUtf8("<FONT COLOR=RED><B>") + tmpstr + QString::fromUtf8("</B></FONT>");
+ } else {
+ tmpstr = QString::fromUtf8("<FONT COLOR=GREEN><B>") + tmpstr + QString::fromUtf8("</B></FONT>");
+ }
}
} else {
tmpstr = QString::fromUtf8("<FONT COLOR=BLUE> EMPTY </FONT>");
<file alias="normal_fragment_shader.glsl">../../gui/normal_fragment_shader.glsl</file>
<file alias="chromakey_fragment_shader.glsl">../../gui/chromakey_fragment_shader.glsl</file>
<file alias="chromakey_fragment_shader2.glsl">../../gui/chromakey_fragment_shader2.glsl</file>
+ <file alias="led_fragment_shader.glsl">../../gui/led_fragment_shader.glsl</file>
+ <file alias="led_vertex_shader.glsl">../../gui/led_vertex_shader.glsl</file>
<file alias="vertex_shader.glsl">../../gui/vertex_shader.glsl</file>
<file alias="grids_fragment_shader.glsl">../../gui/grids_fragment_shader.glsl</file>
<file alias="grids_vertex_shader.glsl">../../gui/grids_vertex_shader.glsl</file>
do_change_refresh_rate(screen->refreshRate());
connect(screen, SIGNAL(refreshRateChanged(qreal)), this, SLOT(do_change_refresh_rate(qreal)));
connect(this, SIGNAL(sig_update_screen(bitmap_t *)), glv, SLOT(update_screen(bitmap_t *)), Qt::QueuedConnection);
+ connect(this, SIGNAL(sig_update_osd()), glv, SLOT(update_osd()), Qt::QueuedConnection);
connect(this, SIGNAL(sig_push_frames_to_avio(int, int, int)), glv->extfunc, SLOT(paintGL_OffScreen(int, int, int)));
//connect(this, SIGNAL(sig_call_draw_screen()), p_osd, SLOT(draw_screen()));
//connect(this, SIGNAL(sig_call_no_draw_screen()), p_osd, SLOT(no_draw_screen()));
void DrawThreadClass::doWork(const QString ¶m)
{
-
+ int ncount = 0;
bRunThread = true;
do {
if(bDrawReq) {
if(draw_screen_buffer != NULL) {
bDrawReq = false;
emit sig_update_screen(draw_screen_buffer);
+ } else {
+ if(ncount == 0) emit sig_update_osd();
}
+ } else {
+ if(ncount == 0) emit sig_update_osd();
}
+ ncount++;
+ if(ncount >= 8) ncount = 0;
if(rec_frame_count > 0) {
emit sig_push_frames_to_avio(rec_frame_count,
rec_frame_width, rec_frame_height);
int sig_draw_frames(int);
int message_changed(QString);
int sig_update_screen(bitmap_t *);
+ int sig_update_osd(void);
int sig_draw_timing(bool);
int sig_push_frames_to_avio(int, int, int);
int sig_call_draw_screen();
--- /dev/null
+uniform vec4 color;
+void main ()
+{
+ gl_FragColor = color;
+}
+
+
--- /dev/null
+attribute vec3 vertex;
+void main ()
+{
+ vec4 tmpvar_1;
+ tmpvar_1.w = 1.0;
+ tmpvar_1.xyz = vertex.xyz;
+ gl_Position = tmpvar_1;
+}
+
int sig_stop_auto_key(void);
int sig_set_display_osd(bool);
int sig_display_osd_leds(int,bool);
+ int sig_set_led_width(int);
int sig_set_orientation_osd(int);
int quit_debugger_thread(void);
graphicsView->setAttribute(Qt::WA_InputMethodEnabled, false); // Disable [Zenkaku / Hankaku] with IM.
graphicsView->setAttribute(Qt::WA_KeyboardFocusChange, false);
graphicsView->setAttribute(Qt::WA_KeyCompression, false);
-
+ connect(this, SIGNAL(sig_set_display_osd(bool)), graphicsView, SLOT(do_set_display_osd(bool)));
+ connect(this, SIGNAL(sig_set_led_width(int)), graphicsView, SLOT(do_set_led_width(int)));
//graphicsView->setFocusPolicy(Qt::StrongFocus);
//this->setFocusPolicy(Qt::ClickFocus);
}
pCentralLayout->addWidget(driveData);
driveData->setVisible(false);
graphicsView->setVisible(true);
+ //emit sig_set_display_osd(true);
break;
case 1:
pCentralLayout->addWidget(driveData);
pCentralLayout->addWidget(graphicsView);
driveData->setVisible(true);
graphicsView->setVisible(true);
+ //emit sig_set_display_osd(false);
break;
case 2:
pCentralLayout->addWidget(graphicsView);
pCentralLayout->addWidget(driveData);
driveData->setVisible(true);
graphicsView->setVisible(true);
+ //emit sig_set_display_osd(false);
break;
- }
+ default:
+ pCentralLayout->addWidget(graphicsView);
+ pCentralLayout->addWidget(driveData);
+ driveData->setVisible(true);
+ graphicsView->setVisible(true);
+ //emit sig_set_display_osd(false);
+ break;
+ }
driveData->setOrientation(using_flags->get_config_ptr()->virtual_media_position);
connect(this, SIGNAL(sig_set_orientation_osd(int)), driveData, SLOT(setOrientation(int)));
- //connect(this, SIGNAL(sig_resize_osd(int)), driveData, SLOT(setScreenWidth(int)));
connect(graphicsView, SIGNAL(sig_resize_osd(int)), driveData, SLOT(setScreenWidth(int)));
MainWindow->setFocusProxy(graphicsView);
- //driveData->setAllowedAreas(Qt::RightToolBarArea | Qt::BottomToolBarArea);
- //MainWindow->addToolBar(driveData);
- //MainWindow->setCorner(Qt::BottomRightCorner, Qt::BottomDockWidgetArea);
MainWindow->centralWidget()->adjustSize();
MainWindow->adjustSize();
menuDebugger = new QMenu(menuControl);
menuDebugger->setObjectName(QString::fromUtf8("menuDebugger"));
menuDebugger->setToolTipsVisible(true);
+ int _led_width = 0;
if(using_flags->is_use_fd()) {
int i;
for(i = 0; i < using_flags->get_max_drive(); i++) CreateFloppyMenu(i, i + 1);
+ _led_width = _led_width + 8;
}
if(using_flags->is_use_qd()) {
int i;
for(i = 0; i < using_flags->get_max_qd(); i++) CreateQuickDiskMenu(i, i + 1);
+ _led_width = _led_width + 2;
}
if(using_flags->is_use_tape()) {
for(int i = 0; i < using_flags->get_max_tape(); i++) CreateCMTMenu(i);
+ _led_width = _led_width + 2;
}
+ if(using_flags->get_max_scsi() > 0) {
+ _led_width = _led_width + using_flags->get_max_scsi() - 1;
+ }
+ emit sig_set_led_width(_led_width);
+
CreateScreenMenu();
if(using_flags->is_use_cart()) {
int i;
pCentralLayout->removeWidget(graphicsView);
pCentralLayout->addWidget(driveData);
pCentralLayout->addWidget(graphicsView);
- emit sig_set_display_osd(true);
+ //emit sig_set_display_osd(true);
}
void Ui_MainWindowBase::do_set_visible_virtual_media_upper()
pCentralLayout->removeWidget(graphicsView);
pCentralLayout->addWidget(driveData);
pCentralLayout->addWidget(graphicsView);
- emit sig_set_display_osd(false);
+ //emit sig_set_display_osd(false);
}
void Ui_MainWindowBase::do_set_visible_virtual_media_lower()
pCentralLayout->removeWidget(graphicsView);
pCentralLayout->addWidget(graphicsView);
pCentralLayout->addWidget(driveData);
- emit sig_set_display_osd(false);
+ //emit sig_set_display_osd(false);
}
void Ui_MainWindowBase::do_set_visible_virtual_media_left()
emit sig_set_orientation_osd(3);
pCentralLayout->removeWidget(driveData);
pCentralLayout->addWidget(driveData, 1, 0);
- emit sig_set_display_osd(false);
+ //emit sig_set_display_osd(false);
#endif
}
emit sig_set_orientation_osd(4);
pCentralLayout->removeWidget(driveData);
pCentralLayout->addWidget(driveData, 1, 2);
- emit sig_set_display_osd(false);
+ //emit sig_set_display_osd(false);
#endif
}
-varying vec2 v_texcoord;
uniform vec4 color;
-uniform sampler2D a_texture;
void main ()
{
- gl_FragColor = (texture2D (a_texture, v_texcoord) * color);
+ gl_FragColor = color;
}
}
+void GLDrawClass::do_set_led_width(int bitwidth)
+{
+ if(extfunc != NULL) {
+ extfunc->do_set_led_width(bitwidth);
+ }
+}
void GLDrawClass::set_emu_launched()
{
emu_launched = true;
void releaseKeyCode(void);
void update_screen(bitmap_t *);
+ void update_osd(void);
void resizeGL(int width, int height);
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
void do_disable_mouse(void);
void do_set_display_osd(bool onoff);
void do_display_osd_leds(int lednum,bool onoff);
+ void do_set_led_width(int bitwidth);
+
signals:
void update_screenChanged(int tick);
void do_notify_move_mouse(int x, int y);
}
}
+void GLDrawClass::update_osd(void)
+{
+ this->update();
+}
+
void GLDrawClass::InitContextCL(void)
{
}
extfunc_2 = NULL;
redraw_required = false;
osd_led_status = 0x00000000;
+ osd_led_status_bak = 0x00000000;
+ osd_led_bit_width = 12;
osd_onoff = true;
uBitmapTextureID = 0;
extfunc_2->glDisable(GL_DEPTH_TEST);
extfunc_2->glViewport(0, 0, p_wid->width(), p_wid->height());
extfunc_2->glOrtho(-1.0f, 1.0f, -1.0f, 1.0f, -1.0, 1.0);
- if(osd_onoff) {
- uint32_t _bit = 0x00000001;
- for(int ii = 0; ii < 32; ii++) {
-
- vertex[0].x = xbase;
- vertex[0].y = ybase;
- vertex[0].z = zbase;
-
- vertex[1].x = xbase + (1.0f / 64.0f);
- vertex[1].y = ybase;
- vertex[1].z = zbase;
-
- vertex[2].x = xbase + (1.0f / 64.0f);
- vertex[2].y = ybase - (1.0f / 64.0f);
- vertex[2].z = zbase;
+ if(osd_led_status != osd_led_status_bak) {
+ if(osd_onoff) {
+ uint32_t _bit = 0x00000001;
+ for(int ii = 0; ii < osd_led_bit_width; ii++) {
+ if((_bit & osd_led_status) == (_bit & osd_led_status_bak)) {
+ xbase = xbase - (1.0f / 32.0f);
+ _bit <<= 1;
+ continue;
+ }
+ vertex[0].x = xbase;
+ vertex[0].y = ybase;
+ vertex[0].z = zbase;
+
+ vertex[1].x = xbase + (1.0f / 64.0f);
+ vertex[1].y = ybase;
+ vertex[1].z = zbase;
+
+ vertex[2].x = xbase + (1.0f / 64.0f);
+ vertex[2].y = ybase - (1.0f / 64.0f);
+ vertex[2].z = zbase;
- vertex[3].x = xbase;
- vertex[3].y = ybase - (1.0f / 64.0f);
- vertex[3].z = zbase;
- if(_bit & osd_led_status) {
- extfunc_2->glColor4f(color_on.x(), color_on.y(), color_on.z(), color_on.w());
- } else {
- extfunc_2->glColor4f(color_off.x(), color_off.y(), color_off.z(), color_off.w());
- }
- extfunc_2->glBegin(GL_POLYGON);
- for(int j = 0; j < 4; j++) {
- extfunc_2->glVertex3f(vertex[j].x, vertex[j].y, vertex[j].z);
+ vertex[3].x = xbase;
+ vertex[3].y = ybase - (1.0f / 64.0f);
+ vertex[3].z = zbase;
+ if(_bit & osd_led_status) {
+ extfunc_2->glColor4f(color_on.x(), color_on.y(), color_on.z(), color_on.w());
+ } else {
+ extfunc_2->glColor4f(color_off.x(), color_off.y(), color_off.z(), color_off.w());
+ }
+ extfunc_2->glBegin(GL_POLYGON);
+ for(int j = 0; j < 4; j++) {
+ extfunc_2->glVertex3f(vertex[j].x, vertex[j].y, vertex[j].z);
+ }
+ extfunc_2->glEnd();
+ xbase = xbase - (1.0f / 32.0f);
+ _bit <<= 1;
}
- extfunc_2->glEnd();
- xbase = xbase - (1.0f / 32.0f);
- _bit <<= 1;
+ osd_led_status_bak = osd_led_status;
}
}
}
*/
drawScreenTexture();
extfunc_2->glDisable(GL_BLEND);
- drawOsdLeds();
if(!using_flags->is_use_one_board_computer() && (using_flags->get_max_button() <= 0)) {
drawGrids();
}
+ drawOsdLeds();
+ extfunc_2->glFlush();
+ } else {
+ drawOsdLeds();
extfunc_2->glFlush();
}
//p_wid->doneCurrent();
this->doSetGridsHorizonal(h, true);
this->doSetGridsVertical(w, true);
}
+
+void GLDraw_2_0::do_set_led_width(int bitwidth)
+{
+ if((bitwidth >= 0) && (bitwidth < 32)) osd_led_bit_width = bitwidth;
+}
bool emu_launched;
uint32_t osd_led_status;
+ uint32_t osd_led_status_bak;
+ int osd_led_bit_width;
bool osd_onoff;
public:
GLDraw_2_0(GLDrawClass *parent, USING_FLAGS *p, CSP_Logger *logger, EMU *emu = 0);
void set_emu_launched(void);
void do_set_display_osd(bool onoff);
void do_display_osd_leds(int lednum, bool onoff);
+ void do_set_led_width(int bitwidth);
signals:
int sig_push_image_to_movie(int, int, int, QImage *);
};
std_pass = NULL;
ntsc_pass1 = NULL;
ntsc_pass2 = NULL;
-
+ for(int i = 0; i < 32; i++) {
+ led_pass[i] = NULL;
+ }
grids_horizonal_buffer = NULL;
grids_horizonal_vertex = NULL;
if(std_pass != NULL) delete std_pass;
if(ntsc_pass1 != NULL) delete ntsc_pass1;
if(ntsc_pass2 != NULL) delete ntsc_pass2;
+ for(int i = 0; i < 32; i++) {
+ if(led_pass[i] != NULL) delete led_pass[i];
+ }
if(grids_horizonal_buffer != NULL) {
if(grids_horizonal_buffer->isCreated()) grids_horizonal_buffer->destroy();
using_flags->get_screen_width(), using_flags->get_screen_height(),
":/vertex_shader.glsl" , ":/chromakey_fragment_shader.glsl",
"Standard Shader");
+ for(int i = 0; i < 32; i++) {
+ initPackedGLObject(&(led_pass[i]),
+ 10, 10,
+ ":/led_vertex_shader.glsl" , ":/led_fragment_shader.glsl",
+ "LED Shader");
+ set_led_vertex(i);
+ }
initPackedGLObject(&ntsc_pass1,
_width, _height,
if(using_flags->is_use_one_board_computer()) {
extfunc->glEnable(GL_BLEND);
extfunc->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- //extfunc->glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
} else {
extfunc->glDisable(GL_BLEND);
}
}
}
+void GLDraw_3_0::drawLedMain(GLScreenPack *obj,
+ QVector4D color)
+{
+ QOpenGLShaderProgram *prg = obj->getShader();
+ QOpenGLVertexArrayObject *vp = obj->getVAO();
+ QOpenGLBuffer *bp = obj->getVertexBuffer();
+ int ii;
+
+ {
+ extfunc->glDisable(GL_TEXTURE_2D);
+ extfunc->glEnable(GL_BLEND);
+ extfunc->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ vp->bind();
+ bp->bind();
+ prg->bind();
+ extfunc->glViewport(0, 0, p_wid->width(), p_wid->height());
+ extfunc->glOrtho(-1.0f, 1.0f, -1.0f, 1.0f, -1.0, 1.0);
+ ii = prg->uniformLocation("color");
+ if(ii >= 0) {
+ prg->setUniformValue(ii, color);
+ }
+
+ prg->enableAttributeArray("vertex");
+ int vertex_loc = prg->attributeLocation("vertex");
+ extfunc->glEnableVertexAttribArray(vertex_loc);
+ extfunc->glEnable(GL_VERTEX_ARRAY);
+ extfunc->glDrawArrays(GL_POLYGON, 0, 4);
+ bp->release();
+ vp->release();
+
+ prg->release();
+ extfunc->glDisable(GL_TEXTURE_2D);
+ extfunc->glDisable(GL_BLEND);
+ }
+
+}
+
void GLDraw_3_0::drawOsdLeds()
{
QVector4D color_on;
QVector4D color_off;
- VertexTexCoord_t vertex[4];
- float xbase, ybase, zbase;
+ uint32_t bit = 0x00000001;
if(osd_onoff) {
color_on = QVector4D(0.95, 0.0, 0.05, 1.0);
color_off = QVector4D(0.05,0.05, 0.05, 0.10);
color_on = QVector4D(0.00,0.00, 0.00, 0.0);
color_off = QVector4D(0.00,0.00, 0.00, 0.0);
}
- xbase = 0.0f + (1.0f / 32.0f) * 31.0f + (1.0f / 128.0f);
- ybase = -1.0f + (2.0f / 64.0f) * 1.5f;
- zbase = -0.999f;
-
- extfunc->glEnable(GL_BLEND);
- extfunc->glDisable(GL_TEXTURE_2D);
- extfunc->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- extfunc->glDisable(GL_DEPTH_TEST);
- extfunc->glViewport(0, 0, p_wid->width(), p_wid->height());
- extfunc->glOrtho(-1.0f, 1.0f, -1.0f, 1.0f, -1.0, 1.0);
if(osd_onoff) {
- uint32_t _bit = 0x00000001;
-
- xbase = 0.0f + (1.0f / 32.0f) * 31.0f + (1.0f / 128.0f);
- ybase = -1.0f + (2.0f / 64.0f) * 1.5f;
- ybase = 0.0f;
- xbase = -1.0f + 0.1f;
- zbase = -0.999f;
- for(int ii = 0; ii < 32; ii++) {
-
- vertex[0].x = xbase;
- vertex[0].y = ybase;
- vertex[0].z = zbase;
-
- vertex[1].x = xbase + (1.0f / 64.0f);
- vertex[1].y = ybase;
- vertex[1].z = zbase;
-
- vertex[2].x = xbase + (1.0f / 64.0f);
- vertex[2].y = ybase - (1.0f / 64.0f);
- vertex[2].z = zbase;
-
- vertex[3].x = xbase;
- vertex[3].y = ybase - (1.0f / 64.0f);
- vertex[3].z = zbase;
- if(_bit & osd_led_status) {
- extfunc->glColor4f(color_on.x(), color_on.y(), color_on.z(), color_on.w());
- } else {
- extfunc->glColor4f(color_off.x(), color_off.y(), color_off.z(), color_off.w());
+ if(osd_led_status_bak != osd_led_status) {
+ for(int i = 0; i < osd_led_bit_width; i++) {
+ if((bit & osd_led_status) == (bit & osd_led_status_bak)) {
+ bit <<= 1;
+ continue;
+ }
+ drawLedMain(led_pass[i],
+ ((osd_led_status & bit) != 0) ? color_on : color_off);
+ bit <<= 1;
}
- extfunc->glEnableClientState(GL_VERTEX_ARRAY);
- extfunc->glVertexPointer(3, GL_FLOAT, sizeof(VertexTexCoord_t),(void *)vertex);
- extfunc->glDrawArrays(GL_POLYGON, 0, 16);
- extfunc->glDisableClientState(GL_VERTEX_ARRAY);
- xbase = xbase - (1.0f / 32.0f);
- _bit <<= 1;
+ osd_led_status_bak = osd_led_status;
}
}
}
}
drawOsdLeds();
extfunc->glFlush();
- }
+ } else {
+ extfunc->glViewport(0, 0, p_wid->width(), p_wid->height());
+ extfunc->glOrtho(-1.0f, 1.0f, -1.0f, 1.0f, -1.0, 1.0);
+ drawOsdLeds();
+ extfunc->glFlush();
+ }
//p_wid->doneCurrent();
}
vertexTmpTexture[3].t = hmul;
}
+void GLDraw_3_0::set_led_vertex(int xbit)
+{
+ float xbase, ybase, zbase;
+ VertexTexCoord_t vertex[4];
+
+ if((xbit < 0) || (xbit >=32)) return;
+ xbase = 0.0f + (1.0f / 32.0f) * 31.0f - ((1.0f * (float)xbit) / 32.0f) + (1.0f / 128.0f);
+ ybase = -1.0f + (2.0f / 64.0f) * 1.5f;
+ zbase = -0.999f;
+ vertex[0].x = xbase;
+ vertex[0].y = ybase;
+ vertex[0].z = zbase;
+ vertex[0].s = 0.0f;
+ vertex[0].t = 0.0f;
+
+ vertex[1].x = xbase + (1.0f / 64.0f);
+ vertex[1].y = ybase;
+ vertex[1].z = zbase;
+ vertex[1].s = 1.0f;
+ vertex[1].t = 0.0f;
+
+ vertex[2].x = xbase + (1.0f / 64.0f);
+ vertex[2].y = ybase - (1.0f / 64.0f);
+ vertex[2].z = zbase;
+ vertex[2].s = 1.0f;
+ vertex[2].t = 1.0f;
+
+ vertex[3].x = xbase;
+ vertex[3].y = ybase - (1.0f / 64.0f);
+ vertex[3].z = zbase;
+ vertex[3].s = 0.0f;
+ vertex[3].t = 1.0f;
+
+ setNormalVAO(led_pass[xbit]->getShader(), led_pass[xbit]->getVAO(),
+ led_pass[xbit]->getVertexBuffer(),
+ vertex, 4);
+}
+
void GLDraw_3_0::do_set_screen_multiply(float mul)
{
screen_multiply = mul;
GLScreenPack *ntsc_pass1;
GLScreenPack *ntsc_pass2;
GLScreenPack *bitmap_block;
+ GLScreenPack *led_pass[32];
VertexTexCoord_t vertexTmpTexture[4];
virtual void drawBitmapTexture(void);
virtual void drawButtonsMain(int num, bool f_smoosing);
virtual void drawOsdLeds();
+ virtual void drawLedMain(GLScreenPack *obj, QVector4D color);
+ virtual void set_led_vertex(int bit);
public:
GLDraw_3_0(GLDrawClass *parent, USING_FLAGS *p, CSP_Logger *logger, EMU *emu = 0);